Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1168to1172
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

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

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

Betreff
Benutzer
Anzeige
AW: Stringaufteilung
04.08.2010 05: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 07: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 10: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
AW: Stringaufteilung
04.08.2010 14: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 14: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
AW: Stringaufteilung
04.08.2010 15:12:56
Gerd
Hallo Gandalf :-)
wie ist TextAlign eingestellt?
Gruß Gerd
AW: Stringaufteilung
04.08.2010 15: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 17: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

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige