こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

エクセル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のキャプションとして表示されてしまいます。
どのようにしたら良いでしょうか?
よろしくお願い致します。

投稿日時 - 2009-03-29 15:17:51

QNo.4836326

すぐに回答ほしいです

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

コンボボックスにどのような値があるかわかりませんが、

>If UserForm1.ComboBox1 = Worksheets("Sheet1").Select Then
If UserForm1.ComboBox1.Text = "Sheet1" Then

とかではないの?
或いは
UserForm2.Caption = Worksheets(UserForm1.ComboBox1.Text).Range("B3").Value
の一行だけとか?

投稿日時 - 2009-03-29 15:27:04

お礼

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

投稿日時 - 2009-03-29 15:47:07

ANo.1

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

こんにちは。

ご質問の内容から見て、勉強を兼ねてコードを組んでらっしゃると
思いました。ので具体的なコードは省略して調べるとっかかりを
ご提案します。

具体的なコードだけ知りたいということでしたら、n-jun様の回答を
参考にされる方がよいと思います。

今のコードでは常に最後のElseに該当していると思います。
もしガイドブック的なものをお持ちなら、デバッグ実行という方法を
調べて実行してみましょう。そして、
UserForm1.ComboBox1
Worksheets("Sheet1").Select
の二つにどんな値が入っているかを見てみましょう。実際には、
それぞれ色んな項目(プロパティ)があることが判りますし、
その中の何を使えばいいのかも調べられるようになります。

もし、こんな風に自分で調べてみたいという方針だけれども進め方が
見えないということでしたらまた聞いてください。

投稿日時 - 2009-03-29 15:43:51

お礼

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

投稿日時 - 2009-03-29 15:52:43

あなたにオススメの質問