Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Anzeige
Inhaltsverzeichnis

Stringaufteilung

Forumthread: Stringaufteilung

Stringaufteilung
Ewald
Hallo
mal wieder eine Aufgabe aber keine Lösung
Habe in einer Textbox folgenden String 30456789-12 dieser wird aufgeteilt in 3 Variablen
A =

Left(TextBox1.Text, 2) 
= 30
B =

Format(Val(Split(Mid(TextBox1.Text, 3), "-")(0)), "### ### ##0") 
= 456 789
C =

If InStr(TextBox1.Text, "-") > 0 Then
myNS = Mid(TextBox1.Text, InStr(TextBox1.Text, "-")) 
= -12
Wenn ich die Variablen jetzt zusammensetze kommt folgendes Ergebnis
1. Variante B & C = 456 789-12 ist ok
2. Variante A & " " & B & C = 30 456 789 ist falsch -12 fehlt
habe mir über msg C anzeigen lassen und das ist OK nur in der Ausgabe fehlt C
Vielleicht hat ja jemand eine Lösung oder einen Tip was da schief läuft
Gruß Ewald
Anzeige

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Stringaufteilung
04.08.2010 07:46:05
BoskoBiati
Hallo,
da der zugehörige Code fehlt, dürfte es schwierig werden, das zu ergründen.
Gruß
Bosko
AW: Stringaufteilung
04.08.2010 09:32:53
fcs
Hallo Ewald,
prinzipiell funktioniert das Verketten der Strings so und in meinem nachfolgenden kleinen Test-Makro in einem Userform werden die Ergebnisse korrekt in einer Msg-Box und in den Zellen eines Tabellenblatts ausgegeben.
Was ist bei dir denn "Ausgabe"?
Setze im VBA-Editor in den Prozeduren, in denen C ermittelt und ausgegeben wird, einen Haltepunkt und füge die betroffenen Variablen unter Debuggen der Überwachung hinzu. Wenn die Makro-Ausführung unterbricht mit Taste F8 schrittweise das Makro weiter ausführen. Irgendwann muss Variable C ja ihren Wert "verlieren" bzw. nicht zugewiesen bekommen, so das er im Ergebnis fehlt.
Wie Bosko schon schrieb: Ohne den kompletten Code der Problem-Prozedur oder auch eine Beispieldatei kann dir kaum geholfen werden.
Gruß
Franz
Private Sub CommandButton1_Click()
Dim A As String, B As String, C As String, myNS As String
Dim Ergebnis1 As String, Ergebnis2 As String
A = Left(TextBox1.Text, 2)
B = Format(Val(Split(Mid(TextBox1.Text, 3), "-")(0)), "### ### ##0")
'Variante um anderes Tausender-Trennzeichen in Textstring einzufügen
B = Format(Val(Split(Mid(TextBox1.Text, 3), "-")(0)), "#,##0")
B = Replace(B, ".", " ")
If InStr(TextBox1.Text, "-") > 0 Then
myNS = Mid(TextBox1.Text, InStr(TextBox1.Text, "-"))
End If
C = myNS
Ergebnis1 = B & C
Ergebnis2 = A & " " & B & C
MsgBox "A: " & A & vbNewLine _
& "B: " & B & vbNewLine _
& "C: " & C & vbNewLine _
& "B & C: " & B & C & vbNewLine _
& "A & "" "" & B & C: " & A & " " & B & C & vbNewLine _
& "Ergebnis1: " & Ergebnis1 & vbNewLine _
& "Ergebnis2: " & Ergebnis2
ActiveSheet.Cells(2, 2) = Ergebnis1
ActiveSheet.Cells(3, 2) = Ergebnis2
Me.Hide
End Sub

Anzeige
AW: Stringaufteilung
04.08.2010 12:12:02
Ewald
Hallo Bosko, Franz
danke für eure Hilfe
@Franz
Habe dein Testmakro laufen lassen, funktioniert einwandfrei
Mein Button hat hinterlegt
ActiveCell.Value = "0" & A & " " & B & C
MsgBox "0" & A & " " & B & C
MsgBox C
Das Ergebnis in der MsgBox ist auch OK
Wenn die MsgBox den String (A,B,C) anzeigt) sehe ich auch das richtige Ergebnis in der Zelle
Ist die Box dann geschlossen, verschwindet C aus der Zelle
Gruß Ewald
Anzeige
AW: Stringaufteilung
04.08.2010 16:14:18
fcs
Hallo Ewald,
die tatsache, das sich der Wert in der Zelle nach dem Schließen der Messagebox nochmals ändert kann ja nur darauf zurückzuführen sein, dass ein weiteres Makro ausgeführt wird.
Wende meinen Tipp mit dem Haltepunkt im Makro an. Verkleinere vor dem Makro-Start das VBA-Programm-Fenster. Wenn du dann mit F8 das Makro schrittweise weiter ausführst, dann solltest du erkennen können wann was passiert. Dannach kann man dann ggf. die Ursache "bekämpfen".
Gruß
Franz
Anzeige
AW: Stringaufteilung
04.08.2010 16:49:13
Ewald
Hallo Franz
genau das wars, es wurde zweimal gestartet, einmal mit C und einmal ohne C
deshalb auch nicht C in Zelle sichtbar.
Habe jetzt noch ein Problem mit der TextBox selber
Obwohl in den Eigenschaften Borderstyle = 0 und in UserForm_Initialize() TextBox1.SelStart = 0 eingetragen ist fängt die Eingabe immer bei der 2.ten Ziffer an und nicht ganz links.
Das produziert bei der Aufteilung des Strings natürlich Fehler. Wie kann man das ändern.
Gruß Ewald
Anzeige
AW: Stringaufteilung
04.08.2010 17:12:56
Gerd
Hallo Gandalf :-)
wie ist TextAlign eingestellt?
Gruß Gerd
AW: Stringaufteilung
04.08.2010 17:32:44
fcs
Hallo Ewald,
die Borderstyle-Eigenschaft sollte hier keine Rolle spielen.
Warum SelStart hier nicht das gewünschte Ergebnis bringt ?
Wenn du die Cursorposition in einer Textbox setzen willst, dann muss erst der Inhalt eingetragen werden, danach kann dann die Cursorposition gesetzt werden.
Private Sub UserForm_Initialize()
TextBox1.Value = Cells(1, 1).Text 'Startwert
TextBox1.SelStart = 0
End Sub
Gruß
Franz
Anzeige
AW: Stringaufteilung
04.08.2010 19:16:38
Ewald
Hallo Gerd, Franz
vielen Dank für eure Hilfe
habe den Fehler gefunden. Im Code des Löschbuttons war ein Fehler, anstatt ....Value = "" stand dort " " sodas immer ein Leerzeichen vorne stand.
Gruß Ewald
Anzeige
Anzeige
Live-Forum - Die aktuellen Beiträge
Datum
Titel
14.05.2026 13:31:09
14.05.2026 09:50:42
13.05.2026 19:14:18