Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


4955 / 13646 ツリー ←次へ | 前へ→

【53419】Excel2000にてGetOpenFileNameの戻り値について 映画館スタッフ 08/1/9(水) 22:34 質問[未読]
【53420】Re:Excel2000にてGetOpenFileNameの戻り値... じゅんじゅん 08/1/9(水) 22:50 発言[未読]
【53421】Re:Excel2000にてGetOpenFileNameの戻り値... neptune 08/1/9(水) 22:53 回答[未読]
【53422】Re:Excel2000にてGetOpenFileNameの戻り値... neptune 08/1/9(水) 22:54 回答[未読]
【53423】Re:Excel2000にてGetOpenFileNameの戻り値... 映画館スタッフ 08/1/9(水) 22:58 お礼[未読]

【53419】Excel2000にてGetOpenFileNameの戻り値に...
質問  映画館スタッフ  - 08/1/9(水) 22:34 -

引用なし
パスワード
   はじめまして
早速ですが質問させていただきます。
使用環境: Windows XP MCE , Excel 2000
VBAのコード内にて、ファイルを開くダイアログを表示して、ファイル名を取得する関数を作っているのですが、ユーザーがキャンセルを押した場合の戻り値でつまづいています。(キャンセルが押されたら処理を終了する、という形にしたいのです)

持っている参考書には、キャンセルが押されたら False が返るとあります。
また、VarType(FileName)=vbBoolean だったらキャンセルが押されたと解釈できる、ともありました。

FileName = Application.GetOpenFileName()
if VarType(FileName)=vbBoolean Then Exit Sub

実際上のようにやってみたところ、これがうまくいきません。
キャンセルを押すと、"False"という文字列は返ってきますが、vbBoolean型ではなく vbString型として返ってくるのです。おまけに処理が続いてしまって、Falseというファイルが作成されてしまいます。

参考書はExcel2002/2003バージョンなので、2000だとこれは使えないのでしょうか?
一応、文字列"False"が返ってきたら処理を終了するという形で問題はなくなったのですが、気になりましたので質問させていただきました。
よろしくお願いします。

【53420】Re:Excel2000にてGetOpenFileNameの戻り...
発言  じゅんじゅん  - 08/1/9(水) 22:50 -

引用なし
パスワード
   ▼映画館スタッフ さん:
>はじめまして
>早速ですが質問させていただきます。
>使用環境: Windows XP MCE , Excel 2000
>VBAのコード内にて、ファイルを開くダイアログを表示して、ファイル名を取得する関数を作っているのですが、ユーザーがキャンセルを押した場合の戻り値でつまづいています。(キャンセルが押されたら処理を終了する、という形にしたいのです)
>
>持っている参考書には、キャンセルが押されたら False が返るとあります。
>また、VarType(FileName)=vbBoolean だったらキャンセルが押されたと解釈できる、ともありました。
>
>FileName = Application.GetOpenFileName()
>if VarType(FileName)=vbBoolean Then Exit Sub
>
>実際上のようにやってみたところ、これがうまくいきません。
>キャンセルを押すと、"False"という文字列は返ってきますが、vbBoolean型ではなく vbString型として返ってくるのです。おまけに処理が続いてしまって、Falseというファイルが作成されてしまいます。
>
>参考書はExcel2002/2003バージョンなので、2000だとこれは使えないのでしょうか?
>一応、文字列"False"が返ってきたら処理を終了するという形で問題はなくなったのですが、気になりましたので質問させていただきました。
>よろしくお願いします。

FileName をどのように宣言されているか不明ですが、

Dim Filename As Variant
なら問題なかったです(当方2002ですけど)

【53421】Re:Excel2000にてGetOpenFileNameの戻り...
回答  neptune  - 08/1/9(水) 22:53 -

引用なし
パスワード
   ▼映画館スタッフ さん:
こんにちは

当方XL2Kですが、コピペして検証してみました。

問題ないですよ。
vbBoolean 型で返ってきました。

【53422】Re:Excel2000にてGetOpenFileNameの戻り...
回答  neptune  - 08/1/9(水) 22:54 -

引用なし
パスワード
   もしかして
dim FileName as string 
ってやってませんか?

【53423】Re:Excel2000にてGetOpenFileNameの戻り...
お礼  映画館スタッフ  - 08/1/9(水) 22:58 -

引用なし
パスワード
   じゅんじゅんさん、neptune さん、ありがとうございます
ご指摘のとおり、
Dim FileName As String
と宣言していました!!
バリアント型にすればよかったのですね、お恥ずかしい限りです。
ありがとうございました。

4955 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free