• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VBA 数字と文字の判断について)

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

このQ&Aのポイント
  • Excel2000を使用し、ユーザーフォームのテキストボックスに「A00B0.5C-3.0」と入力してコマンドボタンを押すと、セルのA1に「00」、B1に「0.5」、C1に「-3.0」と表示したいが、マクロを使用すると「-」と「.」も文字と認識してしまい、分かれて表示されてしまう。
  • 連続して「00」「0.5」「-3.0」と表示させるために、どのようにすれば良いか教えてください。
  • VBAにおいて、数字と文字の判断方法について知りたい。

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

  • ベストアンサー
  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.2

数字を取り出すのではなく、 アルファベットを省くのは如何でしょう。 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 一例になれば。

yasu7r
質問者

お礼

返答ありがとうございます。 このやり方でうまくいきました!文字ではなくアルファベットを省けばよかったんですね。 勉強になりました。

その他の回答 (2)

  • nda23
  • ベストアンサー率54% (777/1415)
回答No.3

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

yasu7r
質問者

お礼

返答ありがとうございます。 この方法でもうまくいきました!正規表現の部分がまだちょっと勉強不足でした。 これからもっと勉強していきたいと思います。 ありがとうございました。

  • A88No8
  • ベストアンサー率52% (836/1606)
回答No.1

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

yasu7r
質問者

補足

返答ありがとうございます。 入力データのフォーマットは12桁固定ではなく変動します。 アルファベットは変動しますが、-と.の符号は固定です。

関連するQ&A