●概要●
InputBox関数を利用して、ユーザーに文字列を入力させる処理があるとします。このとき、Sample1のコードの場合、入力ダイアログボックスに何も入力せずに[OK]ボタンをクリックしても、Ifステートメントの条件式はTrueになってしまい、想定している動作と異なる動作の原因になる場合があります。このような場合、StrPtr関数を利用すると、正しく処理を分岐することができます。
構文 StrPtr(Ptr As String) As Long
設定項目 内容
Ptr 文字列型のデータを指定
InputBox 関数は、[キャンセル]ボタンをクリックしたときには、値0の文字列を返します。StrPtr関数は、引数にvbNullString(値0の文字列)を指定したときのみ、0を返します。そこで、Sample1のコードを、Sample2のように修正します。これで、[キャンセル]ボタンをクリックした場合の処理を正確に行うことができるようにな
ります。
●サンプル1●
Sub Sample1()
Dim returnData As String
returnData = InputBox("データを入力")
If returnData = "" Then
MsgBox "キャンセルされました"
Exit Sub
Else
MsgBox "データが入力されました"
End If
End Sub
●サンプル2●
Sub Sample2()
Dim returnData As String
returnData = InputBox("データを入力")
If StrPtr(returnData) = 0 Then
MsgBox "キャンセルされました"
Exit Sub
Else
MsgBox "データが入力されました"
End If
End Sub
●ポイント●
StrPtr関数は、非表示メンバです。オブジェクトブラウザの[クラス]ボックスで、右クリックし、[非表示のメンバを表示]をクリックすることで、確認することができます。