- ベストアンサー
InputBoxの入力値を半角数字のみと限定する方法
Excel_VBAで、InputBoxにより半角数字の入力を求めています。入力値が半角数字でない判定をするのに、最も容易な方法はありませんか?"CInt"だと文字列ではダメですし、悩んでおります。 InputBoxに、半角数字のみと限定するようなオプションがあれば良いのですが・・・。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
WinXP、IE6、Excel2003では以下のコードで動きました. 正規表現の意味はいろいろサイトをめぐってみてください. Set regEx = CreateObject("VBScript.RegExp") regEx.Pattern = "^\d+$" strVal = InputBox("何か入力して下さい.") If regEx.Test(strVal) Then MsgBox ("OK") Else MsgBox ("NG") End If
その他の回答 (3)
- Wendy02
- ベストアンサー率57% (3570/6232)
こんにちは。 初歩的なことだと思いますが、InputBox メソッドにすればよいです。 数字の全角半角は気にしなくてよいです。 Sub TestSample() Dim Ret As Variant Ret = Application.InputBox("数字を入力してください。", Type:=1) If VarType(Ret) = vbBoolean Or Ret = "" Then Exit Sub MsgBox "入力は " & Ret & " Ret + 2 =" & Ret + 2 End Sub
お礼
アドバイスをありがとうございます。とりあえず解決しましたので、このような手段もあると言うことを頭の片隅にでも留めおき、次回の際に参考とさせていただきます。
- mshr1962
- ベストアンサー率39% (7417/18945)
InputBoxの内容が数値であるなら全角であっても Cintでいいと思いますが、変換できる値は、-32,768 ~ 32,767 です。 CLng,CSng,CDblの方が桁数は使えますが...
お礼
アドバイスをありがとうございます。 入力値が全角数字でもそう支障はないのですが、誤って半角英字・かな文字が入力されている可能性を考慮したための判定です。半角数字としたために誤解を招いてしまいましたね、すみません。
正規表現を使ってみてはいかがでしょう?
お礼
早速の回答をありがとうございます、参考URLに従ってトライしましたが上手くいきません。 それ以前に、理解不足のため疑問があります。Sample2のREとreMatchの関係は? 私の希望としては、下記msgの内容が半角数字である判定ができれば良いのですが・・・。 Do Until msg_flg = True msg = InputBox("数値入力", " 1-9より入力してください ") If msg <> "" Then cc = msg msg_flg = True End If Loop
お礼
有難うございました、無事思い通りの動作が確認できました。一言でVBAと言っても奥が深いものです・・・。 度重なる回答に感謝いたします。今後も精進して、次は皆様のお力になれるよう努めます。