• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ExcelVBAWorkbook_Openについて)

Excel VBA Workbook_Openについて

このQ&Aのポイント
  • Excel2003VBAを勉強中の方が、UserForm1に配置したコントロールを操作するためのコードを作成しています。
  • CommandButton1を押すと、ListBox1にCドライブの「写真Sampleフォルダ」にある画像ファイル一覧が表示されます。
  • ListBox1で選択した画像ファイル名をダブルクリックすると、Image1に画像が表示されます。また、Workbook_OpenイベントでUserForm1を表示するように設定し、ユーザーが手動でCommandButton1をクリックすることなくファイル一覧が表示されるようにしたいと思っています。しかし、コンパイルエラーが発生し、どうすれば解決できるか分かりません。

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

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

FilePass = TextBox1.Value となっていますが常にCドライブの「写真Sampleフォルダ」という事でいいのでしょうか。 入力して指定する為にTextBox1があるのでは? 常にCドライブの「写真Sampleフォルダ」という事であれば FilePass = Cドライブの「写真Sampleフォルダ」にして Private Sub CommandButton1_Click()を Private Sub UserForm_Initialize()にすればいいと思います。

souko3
質問者

お礼

早速のご回答有難う御座います。 早速実行してみたところ、目的の動作が出来る事を確認できました! Initializeというのは「初期化=オールクリア」に使用するのだと思っていましたが、私の考え方が間違っておりました。 凄く便利なものなんですね、間違いなく多用すると思われますので、これを機会にきっちりマスターしておきます! >常にCドライブの「写真Sampleフォルダ」という事でいいのでしょうか。 今はこの状態でいいですが、今後はボタンを付けて別フォルダを読み込む設定にするかもしれません。 しかし、試しにInitializeでコードを実行した後、更にCommandButton1に違うフォルダを指定したコードを入力して実行してみましたが、上手く動作できましたので、とりあえず問題はクリアできるかと思います。 (同じ様なコードをInitializeとCommandButton1のイベントに2つ書くのはナンセンスだとは感じておりますが、そこを突き詰めていくとDreamyCatさんのご教示にある「変数の定義」=スコープの概念をちゃんとおさえる必要があるかと思われまして、私の知識がまだそのレベルに至っておりません><) 的確なご教示のお陰で凄く便利なフォームにすることが出来ました、有難う御座います!

その他の回答 (1)

  • DreamyCat
  • ベストアンサー率56% (295/524)
回答No.1

 変数の定義で修正が必要になる部分が出るかもしれませんが private でなく public にすればcommandbuttonなどの呼び出しができます。 call UserForm1.CommandButton1_Click Public Sub CommandButton1_Click() 処理 end sub

souko3
質問者

お礼

早速のご回答有難う御座います! 内容を確認し、早速実行してみました。 ご教示の内容にある様に「変数の定義」に修正が必要なみたいで、「SubまたはFunctionが定義されていない」エラーが出てしまいました。 このエラーを回避するために変数の宣言を変えてみたり、定数にしてみたり、宣言の場所を変えてみたりとやってみましたが、理解できていない為、上手く呼び出しする事が出来ませんでした>< 折角アドバイス頂いたのに申し訳ありません。 しかし、この「変数の定義」(スコープという考え方の事だと認識しました。)というのは、かなり重要なステップであることが分かってきましたので、これから掘り下げて調べていくつもりです。 貴重なアドバイス有難う御座います。 今後もお助け頂けるととても嬉しいです! 有難う御座いました。

関連するQ&A

専門家に質問してみよう