
VBA初心者です。現在仕事でエクセルを利用してツールを作成しておりますが、作業に詰まってしまったため、詳しい方教えていただけないかと思い質問させていただきます。
Userform1に、テキストボックス【txt】とコマンドボタン【btn】があり、Userform2にコンボボックス【cmb】があったとします。そして、Userform1の【btn】をクリックするとUserform2が開く作りだとします。
【cmb】のRowSourceには、あらかじめ名前の定義で指定したセル範囲が設定されており、リストは
一列目 二列目
a1 あああ
b1 かかか
b2 ききき
c2 ししし
d4 ててて
・ ・
・ ・
・ ・
で、ColumnCount = 2 、ColumnWidths = 0pt ; 10pt
という設定です。
そこで質問ですが、Userform1の【btn】をクリックした時に【txt】に入力されている値に応じて、Userform2の【cmb】の初期値を決定するにはどのようにすればよいでしょうか?なお、【txt】に入力する値は【cmb】のリストの一列目のいずれかである必要があるとします。
私で考えられる対応方法としては、下記のような記述ならうまくいくのかな??とは思うのですが、実際の【cmb】のRowSourceはそれなりに大きいリストであるため、もう少しスマートにやる方法があれば是非教えていただきたいと思っています。どうぞよろしくお願いします。
---------------------------------------------------------------------------------------------------------
Public b As Integer '標準モジュール
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Private Sub btn_Click() 'Userform1
Dim a As Strin
a = txt.Text
Select Case a
Case a1
b = 0
Case b1
b = 1
Case b2
b = 2
Case c2
b = 3
・
・
・
End Select
Open Userform2 (オブジェクト名)
End Sub
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Private Sub UserForm_Initialize() 'Userform2
cmb.listindex = b
End Sub

No.1ベストアンサー
- 回答日時:
以下のようにしてください。
尚、Private Sub UserForm_Initialize() 'Userform2で
cmb.listindex = b は、Sub btn_Clickでbの値を設定する前にUserForm_Initializeが実行されますので
bに正しい値を設定しても、その値がcmb.listindexに反映されません。
従って、
①Private Sub UserForm_Initialize() 'Userform2 では何もしない。
②Private Sub Btn_Click()で直接、cmb.listindexを書き換える。
ことが必要です。
あと、userformの表示はopenでなく、showを使用します。
---------------------------------------
Private Sub Btn_Click()
Dim text As String
Dim i As Long
text = Txt.text
UserForm2.Cmb.ListIndex = -1
For i = 0 To UserForm2.Cmb.ListCount - 1
If text = UserForm2.Cmb.List(i, 0) Then
UserForm2.Cmb.ListIndex = i
End If
Next
If UserForm2.Cmb.ListIndex = -1 Then
MsgBox ("該当なし")
Exit Sub
End If
UserForm2.Show
End Sub
早々のご回答ありがとうございす。返事が遅くなって申し訳ありませんでした。
ご回答いただいた内容大変参考になりました。詰まっていた箇所もうまくいきましたし、今後の作業でも活用できそうです。
今回は本当にありがとうございした。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- Excel(エクセル) 2つのVBAを一緒にしたら機能しなくなりました(エクセル) 7 2022/06/02 12:41
- Visual Basic(VBA) vbaでセルに入力したときに,その横にあるセルを保護し入力不可にするマクロを作りたいです。 2 2022/04/24 20:59
- Visual Basic(VBA) エクセルのVBAでダブルクリックでチェックを入れたあと 1 2022/10/26 20:30
- Visual Basic(VBA) 【追加】ファイルを閉じてダイアログで保存した時だけ処理の実行をする 3 2022/03/23 15:43
- Visual Basic(VBA) エクセル VBAについて 2 2022/05/16 16:33
- Visual Basic(VBA) VBA シート上にドロップダウンリストを作り、予め指定値をセットしたいのですが 1 2023/03/25 15:15
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/15 15:48
このQ&Aを見た人はこんなQ&Aも見ています
-
初めて見た映画を教えてください!
初めて見た映画を覚えていますか?
-
いちばん失敗した人決定戦
あなたの「告白」での大失敗を教えてください。
-
みんなの【マイ・ベスト積読2024】を教えてください。
積読、ついついしちゃいませんか?そこでみなさんの 「2024年に買ったベスト積読」を聞きたいです。
-
AIツールの活用方法を教えて
みなさんは普段どのような場面でAIツール(ChatGPTなど)を活用していますか?
-
今から楽しみな予定はありますか?
いよいよ2025年が始まりました。皆さんには、今から楽しみにしている予定はありますか?
-
Excel VBA コンボボックスの初期値の設定について
Excel(エクセル)
-
ユーザーフォームを表示中にシートの操作をさせるには
Excel(エクセル)
-
EXCEL VBA コンボボックス、テキストボックスが未入力のときメッセージを表示する方法
Excel(エクセル)
-
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一番好きなみそ汁の具材は?
- ・泣きながら食べたご飯の思い出
- ・「これはヤバかったな」という遅刻エピソード
- ・初めて自分の家と他人の家が違う、と意識した時
- ・いちばん失敗した人決定戦
- ・思い出すきっかけは 音楽?におい?景色?
- ・あなたなりのストレス発散方法を教えてください!
- ・もし10億円当たったら何に使いますか?
- ・何回やってもうまくいかないことは?
- ・今年はじめたいことは?
- ・あなたの人生で一番ピンチに陥った瞬間は?
- ・初めて見た映画を教えてください!
- ・今の日本に期待することはなんですか?
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・【お題】大変な警告
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・最強の防寒、あったか術を教えてください!
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
テキストボックスのvalueとtext...
-
Excel VBAのリストボックスの値...
-
VB初心者。小数点以下の表示で...
-
値を返さないコード パス
-
VB.NETでコンボボックスの1行目...
-
vb6のVSFlexGridで選択行、列の...
-
ACCESS VBA 画像ファ...
-
コンボボックスで選択した項目...
-
RGB値をL*a*b*に変換したい
-
windowsアプリケーションで小数...
-
チェックリストボックスの見え...
-
TextBoxでEnterを押すとGridVie...
-
プログラム
-
Excel VBA 複数選択したリスト...
-
Excel vba ユーザーフォームテ...
-
VB.NetでMy.Settingsにセットさ...
-
コンボボックスを読み取り専用...
-
OpenCVにおいてのYCrCb値の求め方
-
変数名の取得
-
vbaの繰り返しで求める最大値に...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
テキストボックスのvalueとtext...
-
Excel VBA 複数選択したリスト...
-
VB.NETでコンボボックスの1行目...
-
値を返さないコード パス
-
Excel VBAのリストボックスの値...
-
マクロ 特定のセル値のみクリ...
-
C#の質問です
-
VB初心者。小数点以下の表示で...
-
Powershellのparamについて
-
VBA ドロップダウンリストを残...
-
textboxとLabelを動的に変更する
-
vb6のVSFlexGridで選択行、列の...
-
PL/SQLでのTO_DATEの時間取得に...
-
ASPの変数の値をJAVA Script内...
-
VB.netでRGB関数を使うには
-
VBA(自然数)
-
変数名の取得
-
ISDBNULLをスルーしてDBNULLが...
-
【C++/CLI.NET】コンボボックス...
-
VB.NETのスクロールバーコント...
おすすめ情報