Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
  • ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Excelのマクロでファイルを開くのダイアログをキャンセルしたときの挙)

Excelマクロでファイルを開くのダイアログをキャンセルした時の挙動について

このQ&Aのポイント
  • Excelマクロでファイルを開くのダイアログをキャンセルした場合、指定した部分の実行をスキップする方法を解説します。
  • マクロでGetOpenFilename関数を使用してファイルを選択する際、キャンセルを押した場合はFalseが返されます。そのため、vntFileNameがFalseでない場合にのみ実行するように条件分岐を追加することで、キャンセルしたときに特定の処理をスキップさせることができます。
  • 具体的には、If文を使ってvntFileNameがFalseでないかを判定し、条件がtrueの場合にのみ指定した処理を実行するようにします。キャンセルした場合はfalseが返されるため、条件がfalseとなり、実行されないようになります。

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

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.4

こういう場合、きちんと書いてあげたほうがよいですね。 ご自身のコードと見比べてください。ワザとベストの書法ではない方法で書きました。 Sub MyFileOpenPro()  Dim FName As Variant  FName = Application.GetOpenFilename("Excelファイル(*.xls),*.xls, " & _  "CSVファイル(*.csv),*.csv", 1, "ファイルを開く", False)  If VarType(FName) = vbBoolean Then Exit Sub 'マクロ離脱←本来はコメントは不要  'ファイルオープン '←ここにコメントを入れる  Workbooks.Open FName  MsgBox FName 'うんたらかんたらの部分 End Su 以下は、つまらないことを言っていると思ってもよいですが、実務上のアドバイスで、もし、以下の中でどこかに引っかかることがあったら幸いです。 FileName を、Variant 型にするのはでよいです。明示的にわかる変数は、方針(ハンガリアン記表)が変わって、あまりプレフィックスは拘らなくてよいです。特に、VB.Net で、int と long の分岐点が変ったからです。 Variant 型にしたら、Cancel を押せば、当然、データ型は、Boolean 型になりますから、大文字・小文字を考えなくても、VarType や False で、除外項目が作れます。文字型でもよいのですが、Variant 型のほうが上です。 Fname に変えた理由は、別に意味ありません。本来は、こういう省略型は良くないのですが、VBAでは、伝統的になぜかこういう書き方もあるようです。とかくVBA(のみ)では長い変数名は、嫌われます。スクリプト型言語の名残りを残しているのかもしれません。 今回は、そのままでもよいのですが、本格的に、自分だけのコードを書く場合は、見せるコードは無視してよいです。とかく、掲示板では、可読性がどうとかという人がいますが、どうせ、この程度で読めなくなるようなレベルなら、どう書いた所で同じです。本格的に書くときは、なるべく短縮させてしまってください。その代わり、コメントを上手に入れます。ただし、vbBoolean などの、組込み定数までは、勤めて省略はしないでください。

すると、全ての回答が全文表示されます。

その他の回答 (3)

  • mar00
  • ベストアンサー率36% (158/430)
回答No.3

aNo.2です。 Else Exit Sub End If でした。

すると、全ての回答が全文表示されます。
  • mar00
  • ベストアンサー率36% (158/430)
回答No.2

End Ifの前にExit Subを 入れてはどうでしょうか。

すると、全ての回答が全文表示されます。
  • mimeu
  • ベストアンサー率49% (39/79)
回答No.1

ダイアログをキャンセルしたとき vntFileName は文字列型ではなくブール型です。 なので > If vntFileName <> "False" Then ではなくて If vntFileName <> False Then

yskfr
質問者

お礼

修正しましたが、改善されませんでした・・・

すると、全ての回答が全文表示されます。

関連するQ&A