Undefinierter Sub- oder Funktionsfehler beim Versuch, mehrere Zeichenfolgen in VB in einer Zelle zu verketten

Undefinierter Sub- oder Funktionsfehler beim Versuch, mehrere Zeichenfolgen in VB in einer Zelle zu verketten

Ich habe heute bei der Arbeit versucht, ein schnelles Tool zu erstellen, um einige Aufgaben bei der Arbeit zu automatisieren, bin aber auf das Problem gestoßen, dass ich einen Sun- oder Funktionsfehler bekomme. Ich bin ein absoluter Neuling in VB und kenne die Syntax und/oder die sprachspezifischen Besonderheiten nicht. Können Sie mir bitte helfen? Einzelheiten zu dem, was ich versuche zu tun: Grundsätzlich habe ich mehrere Gruppen (nur 4 Zellen in jeder Gruppe), die ich in eine einzelne Zelle kopieren möchte. So:

Gruppe1: Zelle1 Zelle2 Zelle3 Zelle4

Gruppe 2: ... Jede dieser Gruppen muss in eine separate Zelle kopiert werden.

Hier ist der Code:

Public Sub GlobalConcatenation()
    Dim sourcerange As Range
    Dim gbegin As Integer
    Dim gend As Integer
    gbegin = 2
    gend = 5
    sourcerange = Sheets("raw_LSToolData").Range(Cells(2, gbegin), Cells(2, gend))
    Dim i As Integer
    For i = 2 To 50
        callConcatinateAllCellValuesInRange (sourcerange)

        sourcerange = Sheets("raw_LSToolData").Range(Cells(2, gbegin + 4), Cells(2, gend + 4))
End Sub
Function ConcatinateAllCellValuesInRange(sourcerange As Excel.Range) As String
    Dim finalValue As String

    Dim cell As Excel.Range

    For Each cell In sourcerange.Cells
        finalValue = finalValue + CStr(cell.Value)
    Next cell

    ConcatinateAllCellValuesInRange = finalValue
End Function

BEARBEITEN: Ich habe das Gefühl, dass ich auch angeben muss, dass das Problem in der Funktion GlobalConcatenation() auftritt und dass „sourcerange“ hervorgehoben wird, wann immer ich den Fehler erhalte.

EDIT: Code aktualisiert - Rechtschreibfehler behoben

Antwort1

Dies liegt an einem Rechtschreibfehler in dieser Zeile gbeging: -

Das falsche:-

sourcerange = Sheets("raw_LSToolData").Range(Cells(2, gbeging), Cells(2, gend))

sourcerange = Sheets("raw_LSToolData").Range(Cells(2, gbeging + 4), Cells(2, gend + 4))

Richtiges: -

sourcerange = Sheets("raw_LSToolData").Range(Cells(2, gbegin), Cells(2, gend))

sourcerange = Sheets("raw_LSToolData").Range(Cells(2, gbegin + 4), Cells(2, gend + 4))

Antwort2

Die wahrscheinlichste Ursache für Ihren Fehler sind die unqualifizierten Verweise auf Zellen in den Zeilen wie

sourcerange = Sheets("raw_LSToolData").Range(Cells(2, gbegin), Cells(2, gend))

Cells(2, gbegin)bezieht sich auf eine Zelle im aktiven Blatt. Wenn dies nicht raw_LSToolDatader Fall ist, wird ein Fehler ausgegeben

Der richtige Code ist

sourcerange = Sheets("raw_LSToolData").Range(Sheets("raw_LSToolData").Cells(2, gbegin), Sheets("raw_LSToolData").Cells(2, gend))

Ein besserer Weg ist

with Sheets("raw_LSToolData")
    sourcerange = .Range(.Cells(2, gbegin), .Cells(2, gend))
end with

Beachten Sie das .'s vor Rangeund Cells- dies verweist auf das withKlauselobjekt

verwandte Informationen