Microsoft Excel

Herbers Excel/VBA-Archiv

VBA Text trennen


Betrifft: VBA Text trennen von: Simon Hofi
Geschrieben am: 31.01.2018 12:09:39

Hallo,

Ich habe folgendes VBA Problem:

In meiner Excel Liste gibt es ein kleines Eingabeformular.
In diesem Formular wird per Knopfdruck ein Text nach jedem ; getrennt und untereinander ausgegeben.

dies sieht folgendermaßen aus:

Vorher:
Test1; Test2; Test3

Nachher:
Test1
Test2
Test3

----------------------

Nun zu meinem Problem:
Manchmal kommt es vor das vier Wörter hintereinander stehen
(Test1; Test2; Test3; Test4)
Jedoch soll Test4 nicht ausgegeben werden.

Nun benötige ich 2 kleine Makros. Diese sollen wenn der Button betätigt wird Test4 kurz rauslöschen und anschließend Test4 wieder einfügen.

Ich hoffe ich habe mich halbwegs verständlich ausgedrückt.
Wenn nicht einfach nachfragen :)

Hier noch ein kleines Beispiel wie es mit eurem Makro aussehen soll:

Test1; Test2; Test3; Test4;

*Button wird betätigt*

Call Makro1 wird ausgeführt
Test1; Test2; Test3

Call Makro2 wird ausgeführt
Test1
Test2
Test3

Call Makro3 wird ausgeführt
Test1; Test2; Test3; Test4

Gruß Simon

  

Betrifft: AW: VBA Text trennen von: Herbert Grom
Geschrieben am: 31.01.2018 12:32:21

Hallo Simon,

sind das immer nur maximal 4 Wörter?

Servus


  

Betrifft: AW: VBA Text trennen von: yummi
Geschrieben am: 31.01.2018 12:38:28

Hallo Simon,

du musst nicht umständlich löschen und hinzufügen

zum Beispiel:
dein Text in Zelle A1, ausgabe in B1 bis B3

Sub test
dim z() as String
dim i as integer

z = split(ActiveSheet.Cells(1,1).value, ";")  'spaltet dein Wert in A1 nach ; auf

For i = 0 To UBound(z)     'durchläuft das so entstandene Array
   if i < 3 then
      ActiveSheet.Cells(i+1,2).value = z(i)   'Ausgabe
   end if
Next

end Sub
Gruß
yummi


  

Betrifft: AW: VBA Text trennen von: Herbert Grom
Geschrieben am: 31.01.2018 12:44:48

Hallo Simon,

und so geht es auch untereinander:

Sub test()
   Dim z() As String
   Dim i As Integer
   
   z = Split(ActiveSheet.Cells(1, 1).Value, "; ") 'spaltet dein Wert in A1 nach ; auf
   
   For i = 0 To UBound(z)     'durchläuft das so entstandene Array
      If i < 3 Then
         ActiveSheet.Cells(i + 2, 1).Value = z(i) 'Ausgabe
      End If
   Next
End Sub
Durch das Blank hinter dem "; " wird das Ganze auch ohne führendes Blank getrennt.

Servus


  

Betrifft: und ohne Schleife so von: Rudi Maintaire
Geschrieben am: 31.01.2018 13:04:20

Hallo,

Sub test()
   Dim z() As String
   
   z = Split(ActiveSheet.Cells(1, 1).Value, "; ") 'spaltet dein Wert in A1 nach ; auf
   Cells(2, 1).Resize(3) = WorksheetFunction.Transpose(z)

End Sub

Gruß
Rudi


  

Betrifft: AW: und ohne Schleife so von: Simon Hofi
Geschrieben am: 31.01.2018 14:49:30

Danke für die schnellen Antworten :)

Ich habe nun den VBA Code gefunden der mir in meiner Excel alles kaputt macht und auch TEST4 ausgeben würde. Der Code wurde mir hier im Forum gemacht nur leider bringt mir dieser nun nichts mehr.

Dieser sieht folgendermaßen aus:

Sub Zellinhalte_trennen1()
'** Trennen von Zellinhalten an einem vorgegebenen Trennzeichen

'** Dimensionierung der Variablen
Dim lngZ As Long
Dim strTeilstring()   As String
Dim strTrennzeichen As String

'** Vorgaben definieren
Set wsakt = ThisWorkbook.Sheets("Aushang_erstellen")
lngZ = 41 'Ab dieser Zeile wird der getrennte Text ausgegeben;
strTrennzeichen = ";" 'Trennzeichen festlegen z.B. Komma(,) Semikollon(;) Bindestrich(-) etc.

'** Durchlaufen aller Datenzeilen
For x = 35 To 35 'Diese Zeilen werden überprüft;

'** Teilstring am Delimiter auslesen
strTeilstring = Split(Trim(wsakt.Cells(x, 3).Value), strTrennzeichen)
'** Durchlaufen des gesamten Arrays einer Zelle vom ersten bis zum letzten Wert
For A = LBound(strTeilstring) To UBound(strTeilstring)

'** Array-Elemente nacheinander eintragen
wsakt.Cells(lngZ, 3).Value = Trim(strTeilstring(A))
'** Zeilenzähler erhöhen
lngZ = lngZ + 1 '+ = Text wird nach unten ausgegeben | - = Text wird nach oben ausgegeben;

Next A
Next x

     End Sub
Denkt ihr könnte man diesen Code umschreiben das dieser genau das macht was ich oben geschrieben habe?


  

Betrifft: AW: und ohne Schleife so von: Simon Hofi
Geschrieben am: 01.02.2018 14:23:08

Benötige keine Hilfe mehr hab das Problem alleine gelöst mit euren kleine VBA-Skripts :)
Danke!


Beiträge aus dem Excel-Forum zum Thema "VBA Text trennen"