• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:xlAPPがないと、キャンセルしても無視される)

xlAPPの役割とキャンセルの挙動の違い

このQ&Aのポイント
  • xlAPPがないと、キャンセルしても無視される
  • xlAPPがどんな役割をしているのか、xlAPPがないと、なぜ無視されるのかがわかりません
  • InputBoxを開いた時にキャンセルするふたつのプロシージャーを比較した時に、xlAPPがないコードは、キャンセルしても無視されます。xlAPPがない場合のInputBoxの形式も違います

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

  • ベストアンサー
  • queuerev2
  • ベストアンサー率78% (96/122)
回答No.2

Application.InputBoxを使っているということは、No.1さんも書かれていますがExcel VBAですね。 xlAPPがないInputBoxでも、StrPtr関数でキャンセルを判別することができるそうです。 (公式の仕様ではないという話もあるようですが) Dim strPathName As String, vntPathName As Variant 'vntPathNameはString型にしても大丈夫なようです Dim strFileName As String 'ここでわざとESCキーかキャンセルを押す vntPathName = InputBox("参照するフォルダ名を入力して下さい。", , "C:\") If StrPtr(vntPathName) = 0 Then MsgBox "キャンセルがクリックされました" Exit Sub End If

参考URL:
http://hpcgi1.nifty.com/MADIA/VBBBS2/wwwlng.cgi?print+200509/05090069.txt
lkj23lkj
質問者

お礼

どうもありがとうございました。

その他の回答 (1)

  • watabe007
  • ベストアンサー率62% (476/760)
回答No.1

InputBoxは、2つあります。 ◆ApplicationオブジェクトのInputBoxメソッド     入力されたデータを「文字列」「数値」「数式」「セルへの参照」などとして取得できる。     [キャンセル]ボタンが選択された場合、False(理論値)が返される。     キャンセルの場合     If VarType(vntPathName) = vbBoolean Then       MsgBox "キャンセルがクリックされました"       Exit Sub     End If ◆ InputBox 関数     入力されたデータはすべて文字列として取得される。     [キャンセル]ボタンが選択された場合、空の文字列("")が返される     キャンセルの場合     If  vntPathName = "" Then       MsgBox "キャンセルがクリックされました"       Exit Sub     End If

参考URL:
http://officetanaka.net/excel/vba/tips/tips37.htm
lkj23lkj
質問者

お礼

どうもありがとうございました。

関連するQ&A

専門家に質問してみよう