【Excel VBA】InputBox関数でのキャンセル処理
今までVBAを避けてきました(毛嫌い)が、最近業務改善という名の元、Excelでいろいろ作ってます。
ということで、小ネタです。
InputBox関数で利用者へ入力を求めた場合、[キャンセル]ボタンをクリックすると、受取データは''(空)になるので、
キャンセル処理を以下のようにします。
Sub Cancel() Dim inputData As String inputData = InputBox("データを入力してください。") If inputData = '' Then MsgBox "キャンセルされました" Exit Sub Else MsgBox "データが入力されました。" End If End Sub
ところが、上記のコードだと入力ダイアログに何も入力せずに[OK]ボタンをクリックしても、条件式でTrueと評価されてしまいます。
この場合は、StrPtr関数を使用することで、正しくキャンセル処理が行えます。
Sub Cancel() Dim inputData As String inputData = InputBox("データを入力してください。") If StrPtr(inputData) = 0 Then MsgBox "キャンセルされました" Exit Sub Else MsgBox "データが入力されました。" End If End Sub
当たり前なテクニックだとは思いますが、VBA初心者の私には「へぇ〜」と思うような関数でした。