セルに文字列があります。「Client Ref:F123456PassPlus」と表示されます。 数字の前に文字列がない可能性があります。数値に記号があり、文字と数字の間にスペースがある可能性があります。 数値だけを変数として抽出する必要があります。私はそれを行うコードを持っていますが、文字列をループするのをいつ止めるかはわかりません。数字や記号以外のものがある場合には停止する必要がありますが、それは代わりに実行されます。定義はありませんが、任意の変数の文字が以前に定義されているExcel VBAは、文字が見つかるまでループします。
IsNumber = 1
ref = ""
If branch = "" Then
e = b
Else
e = b + 1
End If
f = 1
While IsNumber = 1
For intpos = 1 To 15
ref = Mid(x, e, f)
f = f + 1
Select Case Asc(ref)
Case 45 To 57
IsNumber = 1
Case Else
IsNumber = 0
Exit For
End Select
Next
IsNumber = 0
Wend
は、eはコピーを開始し、xが文字列を含むセルであるようにコードを伝えます。今のところ、すべてうまく動作し、数字で始まりコピーしてより大きな文字列にしますが、インポスが15に達すると停止します。
どこでも終了するには、「Exit Sub」を追加します。 – BruceWayne
私は、マクロがそれに入っているときに(あるいはその直前に)文字を持っていることを知る必要があります。そして、私のコードで 'Exit For'を使います。私が書いたことで、私はそれをしなければならないと思ったが、明らかにそうではないと思った。 –
debug.print Asc(ref)で値を確認しましたか? – CPMunich