VBA: Split-Funktion mit einem Trennzeichen?

3 Antworten

Dein "N" geht von 0 bis zur Länge des Array. Annahme 7.
Also beschreibst du Zelle D1 bis D7
Da du aber von D20 an schreiben willst musst du einen Offset einbauen
const Offset = 20

WBlerf.Range("D" & N + Offset).Value = MeinArray(N)

Gibt es einen Grund, warum du das nicht mit einer kurzen Tabellenfunktion machst?

In D20:

=MTRANS(TEXTTEILEN(Aufmaß_srvpos;";"))
WBlerf.Range("D" & N + 1).Value = MeinArray(N)

Hier benutzt du dein Ziel nicht. Entweder du definierst dein Ziel als Integer (Zeilennummer), dann bräuchtest du hier nur schreiben

WBlerf.Range("D" & Ziel + N).Value = MeinArray(N)

Oder du arbeitest mit Offset (ungetestet):

Ziel.Offset(N).Value = MeinArray(N)

SteGu550 
Fragesteller
 16.11.2023, 10:17

Hallo Suboptimierer,

Vielen Dank für Deine Antwort, beides versucht bringt aber immer Fehler :-( heul..

WBlerf.Range("D" & Ziel + N).Value = MeinArray(N) = Fehler 1004

Ziel.Offset(N).Value = MeinArray(N) = Fehler "ungültiger Bezeichner"

Hatte Dim Ziel As Integer eingefügt aber klappt nicht.

Ist das so richtig?

Grüße Stefan

0
daCypher  16.11.2023, 12:27
@SteGu550

Wenn du die Variante mit Ziel als Integer benutzen willst, musst du Ziel noch mit 20 initialisieren, damit VBA weiß, dass es bei D20 losgeht (sonst versucht das Programm den Wert nach D0 zu schreiben, was den Fehler erzeugt)

Für die andere Variante muss Ziel ein Range sein und du musst es mit Set Ziel zuweisen:

Sub test()
    Dim Ziel As Range
    Set Ziel = [D20]
    
    Dim Woerter() As String
    Woerter = Split([Aufmaß_srvpos], ";")
    
    Dim Offset As Integer
    Offset = 0
    
    Dim Wort As Variant
    For Each Wort In Woerter
        Ziel.Offset(Offset).Value = Wort
        Offset = Offset + 1
    Next Wort
End Sub

Wobei, wie ich in meiner Antwort schon geschrieben hab: Wenn nichts besonderes dagegen spricht, würde ich es eher mit der kurzen Tabellenfunktion in der Zelle D20 machen:

=MTRANS(TEXTTEILEN(Aufmaß_srvpos;";"))

Excel erkennt automatisch, dass das eine Matrixformel ist und füllt die Felder entsprechend. Dafür müssen sie aber vorher leer sein, sonst kommt nur der Fehler #ÜBERLAUF.

Das hat außerdem den Vorteil, dass du die Datei problemlos per E-Mail versenden kannst, weil sie keine Makros enthält.

1