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_LSToolData
der 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 Range
und Cells
- dies verweist auf das with
Klauselobjekt