アプリ版:「スタンプのみでお礼する」機能のリリースについて

こんばんは。
Sub test()
Dim タイトル As String

タイトル = InputBox("タイトルを入力してください。")
If Cancel = True Then Exit Sub
’次のコード・・・
’次のコード・・・
End Sub

このコードを実行した時に
下記のダイアログが出てきて
右のキャンセルボタンを押すと、
「If Cancel = True Then Exit Sub」
でsubステートメントを抜けたいのですが
「Cancel」の部分が
「変数が定義されていません」とエラーになってしまいます。

Dim Cancel As Boolean
を追加してキャンセルボタンを押しても
TrueではなくFalseになってしまいます。

回避方法を教えてください。
よろしくお願いします。

「InputBox キャンセルボタンが押さ」の質問画像

A 回答 (5件)

ヘルプには


キャンセル] ボタンをクリックすると、InputBox 関数は長さ 0 の文字列 ("") を返します。
と書いてありますので
 
Cancelボタンをクリックして抜けるときは、

タイトル = InputBox("タイトルを入力してください。")
If タイトル = "" Then Exit Sub

とします。
    • good
    • 0
この回答へのお礼

文字数か空白かで判断するんですね。
ありがとうございます。

お礼日時:2009/06/25 23:25

こんばんは。



一般的に、InputBox (関数)に、0と[ESC]の区別が付きません。本当は、キャンセル(Esc)は、「0」ではないけれども、数字の0のようしか見えません。ただし、数字で使えるのは、1回だけです。特殊なコードが混じりこんでいます。以下は、トライアルのコードで、実際には使われません。
かつては、StrPtr関数で判定をしていました。

  Dim ret As Variant 'Variant 型に指定
  Dim buf() As Byte
  ret = InputBox("タイトルを入力してください。")
  buf = ret 'パイナリで調べる
  If UBound(buf) < 0 Then Exit Sub
  MsgBox ret

現在は、Applicaiton.InputBox (メソッド)を使うようにします。

Dim ret As Variant 'Variant 型に指定
ret = Application.InputBox("タイトルを入力してください。", Type:=2) '文字で返す
If VarType(ret) = vbBoolean Or ret = "" Then Exit Sub
'次のコード・・・
'次のコード・・・

後は、#4さんのリンク先の通りです。
    • good
    • 0
この回答へのお礼

むむ!!
難しいですね!
もっと言葉の意味を調べて勉強してみます。

お礼日時:2009/06/27 22:48

似たような質問が、以前ありました。



Cancelを識別する方法の例が出ていますので、ご参考までに。
http://oshiete1.goo.ne.jp/qa5011343.html
    • good
    • 0
この回答へのお礼

ありがとうございます。参考にします。

お礼日時:2009/06/25 23:25

Sub test()


  Dim v
  v = InputBox("キャンセルをクリック")
  Stop
End Sub
こんなので、VBEで[ローカルウィンドウ]を表示させて変数 v に何がはいるか確認してみてください。

すると
If タイトル = "" Then Exit Sub
もしくは
If Len(タイトル) = 0 Then Exit Sub
のような判定をする事がわかるはず。
    • good
    • 0
この回答へのお礼

ありがとうございます。

お礼日時:2009/06/25 23:24

こんばんは


以下のような形でいかがでしょうか?
このサンプルの場合、なにも入力しないでOKを押した場合でも、キャンセルを押したのと同じ動作になります。

Sub temp()
If InputBox("タイトルを入力してください") = "" Then
MsgBox "タイトルが入力されていません"
Exit Sub
End If
End Sub
    • good
    • 0
この回答へのお礼

なるほど!ありがとうございます。

お礼日時:2009/06/25 23:23

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A