2017-07-27 1 views
-1

Das insgesamt Ziel ist es, die Zeichen zwischen den Kommas und verwenden Sie sie jeweils in einem anderen Stück Code. Wenn jemand einen optimalen Weg kennt, lass es mich wissen.VBA: Warum gibt meine FOR-Schleife nichts zurück?

Das Problem:

Ich versuche, um die Positionen der Kommas in der Zeichenfolge zu finden.

Der String:

Dim st As String 
st = "1642377,001642381,010301642379" 

Mein Versuch:

For pos = 1 To Len(st) 

    If Mid(st, pos, 1) = "," Then 

     MsgBox ("Position of comma:" & pos) 

    End If 

Next 

Derzeit Rückkehr:

Der Code gibt nichts zurück. Die If-Bedingung gibt nicht wahr zurück.

Erwartetes Ergebnis:

A MsgBox sollte zweimal auftauchen, die Position des Kommas jedes Mal zeigt.

+0

Jemand hat Ihnen einen besseren Weg, dies zu tun, aber ich schätze, dass Ihre Schleife überhaupt nicht läuft .... Ihr Code zeigt 'Für pos = 1 zu len (st)', aber was ist 'st'? Sie zeigen nicht, wie es deklariert wurde oder wie lange es ist ... Wenn Sie durch den Code gehen, sollten Sie in der Lage sein zu sehen, was passiert. – OpiesDad

+0

@OpiesDad wops, sorry. 'st' ist einfach die Saite. – DarthVoid

+0

Wenn Sie herausfinden möchten, warum Ihre Schleife nicht funktioniert, geben Sie eine vollständige Subdatei mit Deklarationen und Zuweisungen ein. Siehe [MCVE]. Verwenden Sie ['Option Explicit'] (https://msdn.microsoft.com/en-us/library/bw9t3484%28v=vs.84%29.aspx), wenn Sie es noch nicht verwenden. - Wahrscheinlich werden Sie das Problem dabei selbst finden. – Andre

Antwort

2

Verwenden Sie die Split-Funktion. Es gibt ein String-Array

Dim parts() As String, p As Variant 

parts = Split("1642377,001642381,010301642379", ",") 
For Each p In parts 
    Debug.Print p 
Next 

druckt

1642377 
001642381 
010301642379 

Sie verwenden zwei verschiedene Werte: st und Me.Text585.Value. Meinst du, st in den beiden Orten zu verwenden? Wenn ich das tue, funktioniert der Code und es gibt die Positionen 8 und 18 zurück.

+0

'st' und' Me.Text585.Value' sind das gleiche, sorry. Ich werde bearbeiten. – DarthVoid