2017-07-27 12 views
-1

の目標は、文字のをコンマの間に戻し、それぞれを別のコードで使用することです。誰かがこれを行うより最適な方法を知っているなら、私に知らせてください。VBA:なぜ私のFORループで何も返されないのですか?

問題:

私は、文字列内のコンマの位置を見つけようとしています。

文字列:

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

私の試み:

For pos = 1 To Len(st) 

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

     MsgBox ("Position of comma:" & pos) 

    End If 

Next 

現在返す:

コードは何も返しません。 If条件がtrueを返さない。

期待される結果:

MsgBoxは、コンマの位置毎時間を示す、二回ポップアップする必要があります。

+0

誰かがあなたにこれをやるより良い方法を教えましたが、あなたのループがまったく動いていないと思います。 'pos = 1〜len(st)'を示しますが、 'st'は何ですか?どのように宣言されているか、どのくらいの期間表示されているかはわかりません。コードをステップ実行すれば、何が起きているのかを知ることができます。 – OpiesDad

+0

@OpiesDad woops、申し訳ありません。 'st'は単に文字列です。 – DarthVoid

+0

ループが動作しない理由を知りたい場合は、宣言と割り当てを含む完全なサブを投稿してください。 [mcve]を参照してください。まだ使用していない場合は、['Option Explicit'](https://msdn.microsoft.com/en-us/library/bw9t3484%28v=vs.84%29.aspx)を使用してください。 - おそらく、あなたはそれをしながら自分自身で問題を見つけるでしょう。 – Andre

答えて

2

スプリット機能を使用します。 stMe.Text585.Value:それは

Dim parts() As String, p As Variant 

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

プリントあなたは2つの異なる値を使用している

1642377 
001642381 
010301642379 

文字列配列を返します。 2つの場所でstを使用することを意味しましたか?私がそうした場合、コードは機能し、位置8と18が返されます。

+0

「st」と「Me.Text585.Value」は同じことですが、残念です。私は編集します。 – DarthVoid

関連する問題