こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

VBA 数字と文字の判断について

VBA 数字と文字の判断について

Excel2000を使用しています。

ユーザーフォームのテキストボックスに A00B0.5C-3.0 というように入力してコマンドボタンのOKなどを押すとセルのA1に00 B1に0.5 C1に-3.0 と表示させたいのですが、下記のマクロを使用すると、
A1に00 B1に0 C1に5 D1に3 E1に0 というように、「-」と「.」も文字と認識してしまい分かれて表示されてしまいます。

セルの位置にはこだわりませんが、連続で 00 0.5 -3.0 と表示させるにはどうしたらよろしいでしょうか?


Dim re As Object
Dim d() As String
Set re = CreateObject("VBScript.RegExp")
re.Pattern = "¥D+(¥d+)"
re.Global = True
d = Split(Trim(re.Replace(tx1.Text, "$1 ")), " ")
If UBound(d) > 10 Then Selection.Resize(1, UBound(d) + 1) = d
Set re = Nothing
 
よろしくお願いします。

投稿日時 - 2010-02-25 13:33:03

QNo.5705061

困ってます

質問者が選んだベストアンサー

数字を取り出すのではなく、
アルファベットを省くのは如何でしょう。

Sub try()
Dim re As Object
Dim d() As String
Dim st As String

Set re = CreateObject("VBScript.RegExp")
re.Pattern = "[A-Z]+"
re.Global = True

st = "A00B0.5C-3.0"

d = Split(Trim(re.Replace(st, " ")), " ")

Range("A1").Resize(, UBound(d) + 1).Value = d

Set re = Nothing

End Sub

一例になれば。

投稿日時 - 2010-02-25 15:14:51

お礼

返答ありがとうございます。

このやり方でうまくいきました!文字ではなくアルファベットを省けばよかったんですね。

勉強になりました。

投稿日時 - 2010-02-25 16:13:35

ANo.2

このQ&Aは役に立ちましたか?

2人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.3

区切り文字として以下の定義になると思います。
「数字、.(ピリオド)、-(ハイフン)でない連続した文字」
正規表現は"[^\d\.\-]+"となります。
以下の部分を修正してください。

re.Pattern = "¥D+(¥d+)"
      ↓
re.Pattern = "[^\d\.\-]"

d = Split(Trim(re.Replace(tx1.Text, "$1 ")), " ")
      ↓
d = Split(Trim(re.Replace(tx1.Text, " ")), " ")

投稿日時 - 2010-02-25 15:42:03

お礼

返答ありがとうございます。

この方法でもうまくいきました!正規表現の部分がまだちょっと勉強不足でした。

これからもっと勉強していきたいと思います。

ありがとうございました。

投稿日時 - 2010-02-25 16:15:35

ANo.1

こんにちは
 入力データのフォーマットは12桁固定ですか?
 AとBと-の符号は、固定ですか?

投稿日時 - 2010-02-25 14:53:17

補足

返答ありがとうございます。

入力データのフォーマットは12桁固定ではなく変動します。

アルファベットは変動しますが、-と.の符号は固定です。

投稿日時 - 2010-02-25 16:12:01

あなたにオススメの質問