Hallo zusammen,
ich bin relativ neu im VBA-Bereich und kenne mich leider noch nicht so gut beim Schreiben von Code aus. Zurzeit hänge ich an einem Makro der mir bspw. folgende Umstrukturierung ermöglichen soll.
Current Structure |
|
Structure after Macro |
|
|
|
|
|
|
|
World |
|
|
|
|
|
Europe |
|
|
|
|
|
Italy |
|
|
World |
Europe |
Italy |
Germany |
|
World |
Europe |
Germany |
France |
|
|
World |
Europe |
France |
North America |
|
|
|
|
USA |
|
|
World |
North America |
USA |
Mexico |
|
|
World |
North America |
Mexico |
South America |
|
|
|
|
Brazil |
|
|
World |
South America |
Brazil |
Venezuela |
|
World |
South America |
Venezuela |
Peru |
|
|
World |
South America |
Peru |
Der Makro soll also je nachdem, um wie viele Leerzeichen das entsprechende Wort eingerückt ist, den Wert der Zelle in eine andere Spalte schreiben. (für mehrere 1000 Zeilen) Meine Idee war, in VBA eine Funktion zu schreiben, die die Anzahl der Leerzeichen vor jedem Wort auswertet und dann bspw. bei 15 Leerzeichen vor dem Wort (Land), den Wert in Spalte E schreibt, bei 10 Leerzeichen (Kontinent) den Wert in Spalte D schreibt und so weiter. Meine Funktion scheint auch zu funktionieren, aber ich verstehe nicht, wie ich das Ergebnis der Funktion in den Code einbauen kann:
Option Explicit
Sub RestructureOHEP()
Dim ws As Worksheet: Set ws = ThisWorkbook.Sheets("Adhoc")
Dim lr As Long, i As Long, pr As Long
lr = ws.Range("B" & ws.Rows.Count).End(xlUp).Row
For i = 1 To lr
If Range("B" & i).Value = 15 Then --> hier müsste ich ja jetzt irgendwie das Ergebnis der Funktion = 15 einbauen
Range("D" & i).Value = 3 --> als Test habe ich einfach mal geschrieben, dass es mir eine 3 in Spalte D anzeigen soll, aber sämtliche Versuche gingen bisher schief
End If
Next i
End Sub
Public Function NumberOfLeadingSpaces(ByVal theString As String) As Integer
NumberOfLeadingSpaces = Len(theString) - Len(LTrim(theString))
End Function
Kann mir hier vielleicht jemand weiterhelfen?
Vielen lieben Dank schon mal :)
Viele Grüße, Dennis
|