• ベストアンサー

エクセルVBA ユーザーフォームの表示内容を選択条件によって変更する

ExcelVBA初心者です。 ユーザーフォーム1でsheet1を選択した場合→次のユーザーフォーム2ではsheet1の内容を、 sheet2を選択した場合→sheet2の、sheet3を選択した場合→sheet3の 内容をそれぞれキャプションとして表示したいのですが、 なかなか上手く出来ません。 Private Sub UserForm_Initialize() If UserForm1.ComboBox1 = Worksheets("Sheet1").Select Then UserForm2.Caption = Worksheets("Sheet1").Range("B3").Value ElseIf UserForm1.ComboBox1 = Worksheets("Sheet2").Select Then UserForm2.Caption = Worksheets("Sheet2").Range("B3").Value Else UserForm1.ComboBox1 = Worksheets("Sheet3").Select UserForm2.Caption = Worksheets("Sheet3").Range("B3").Value End If End Sub としてみたのですが、どのシートを選択してもsheet3の内容が ユーザーフォーム2のキャプションとして表示されてしまいます。 どのようにしたら良いでしょうか? よろしくお願い致します。

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

  • ベストアンサー
  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.1

コンボボックスにどのような値があるかわかりませんが、 >If UserForm1.ComboBox1 = Worksheets("Sheet1").Select Then If UserForm1.ComboBox1.Text = "Sheet1" Then とかではないの? 或いは UserForm2.Caption = Worksheets(UserForm1.ComboBox1.Text).Range("B3").Value の一行だけとか?

tw301014
質問者

お礼

なるほど。 If UserForm1.ComboBox1.Text = "Sheet1" Then と置き換えたらすぐに出来ました! 大変助かりました。ありがとうございました!

その他の回答 (1)

  • ple_mania
  • ベストアンサー率42% (9/21)
回答No.2

こんにちは。 ご質問の内容から見て、勉強を兼ねてコードを組んでらっしゃると 思いました。ので具体的なコードは省略して調べるとっかかりを ご提案します。 具体的なコードだけ知りたいということでしたら、n-jun様の回答を 参考にされる方がよいと思います。 今のコードでは常に最後のElseに該当していると思います。 もしガイドブック的なものをお持ちなら、デバッグ実行という方法を 調べて実行してみましょう。そして、 UserForm1.ComboBox1 Worksheets("Sheet1").Select の二つにどんな値が入っているかを見てみましょう。実際には、 それぞれ色んな項目(プロパティ)があることが判りますし、 その中の何を使えばいいのかも調べられるようになります。 もし、こんな風に自分で調べてみたいという方針だけれども進め方が 見えないということでしたらまた聞いてください。

tw301014
質問者

お礼

ありがとうございます。 ガイドブックで独学で勉強をしているもので、 どうやって調べたら良いか分からずにやみ雲に コードを組んでいる状態なので、とても参考になりました。 デバック実行で調べてみます。 また質問することがあるかと思いますが、よろしくお願いします。

関連するQ&A

専門家に質問してみよう