よろしくお願いします。
今、ユーザーフォームを使って製造計画表を作っています。
コンボボックスで会社名、リストボックスで会社ごとの製品名を選択させるとこまで出来ました。
1日に3つの製品を作ることが出来るので、同じ中身のコンボボックス、リストボックスを使って3つ作りたいと思っています。
ユーザーフォームの形的にはこのような感じですが。
1. コンボボックス リストボックス
2. コンボボックス リストボックス
3. コンボボックス リストボックス
今は、1.のとこだけは出来たのですが、2.3.は1.と同じコードをコピーして必要と思われるとこだけをコンボボックス2と変えたりしてみたのですが、上手くいきませんでした。こんなコードですが。
Private Sub UserForm_initialize()
'ComboBox1セット
Dim ico As Long
ico = 1
With ThisWorkbook.Worksheets("Sheet1")
Do While .Cells(1, ico) <> ""
Me.ComboBox1.AddItem .Cells(1, ico).Value
ico = ico + 1
Loop
End With
Me.ComboBox1.SetFocus
End Sub
Private Sub ComboBox1_Change()
'ListBox1セット
Dim ico As Long
'Me.ListBox1.Clear
ico = Me.ComboBox1.ListIndex + 1
With ThisWorkbook.Worksheets("Sheet1")
Me.ListBox1.List = .Range(.Cells(2, ico), _
.Cells(.Cells(Rows.Count, ico).End(xlUp).Row, ico)).Value
End With
End Sub
VBAも初めたばかりで質問の内容もわかりづらいとも思いますが、よろしくお願いします。
No.1ベストアンサー
- 回答日時:
回答が付いてないようなので。
。UserForm Initializeイベントで3つのComboBoxにLIstをセット
ListBox1のChangeイベントが出来たら、それをコピーして、数値のところを、2,3に変えるだけです。
質問者のコードをそのまま使用するとして。。
'----- 3つのコンボにリストをセット--------
Private Sub UserForm_initialize()
Dim ico As Long
ico = 1
With ThisWorkbook.Worksheets("Sheet1")
Do While .Cells(1, ico) <> ""
Me.ComboBox1.AddItem .Cells(1, ico).Value
ico = ico + 1
Loop
End With
Me.ComboBox2.List = Me.ComboBox1.List
Me.ComboBox3.List = Me.ComboBox1.List
Me.ComboBox1.SetFocus
End Sub
'----------ListBox1をセット----------------
Private Sub ComboBox1_Change()
Dim ico As Long
ico = Me.ComboBox1.ListIndex + 1
With ThisWorkbook.Worksheets("Sheet1")
Me.ListBox1.List = .Range(.Cells(2, ico), _
.Cells(.Cells(Rows.Count, ico).End(xlUp).Row, ico)).Value
End With
End Sub
'----------ListBox2をセット----------------
Private Sub ComboBox2_Change()
Dim ico As Long
ico = Me.ComboBox2.ListIndex + 1
With ThisWorkbook.Worksheets("Sheet1")
Me.ListBox2.List = .Range(.Cells(2, ico), _
.Cells(.Cells(Rows.Count, ico).End(xlUp).Row, ico)).Value
End With
End Sub
'----------ListBox3をセット----------------
Private Sub ComboBox3_Change()
Dim ico As Long
ico = Me.ComboBox3.ListIndex + 1
With ThisWorkbook.Worksheets("Sheet1")
Me.ListBox3.List = .Range(.Cells(2, ico), _
.Cells(.Cells(Rows.Count, ico).End(xlUp).Row, ico)).Value
End With
End Sub
'--------------------------------------------
ただこれではCombo,ListBoxが増えたときにコピーや修正が大変ですので、LIstBoxへのセットは殆ど同じですから、そこをサブルーチンにしてやります。
方法はサブルーチンをコールするときにComboBoxの番号を引数としてコールしてやります。
'-------------------------------
Private Sub ComboBox1_Change()
Call ListBoxSet(1)
End Sub
'-------------------------------
Private Sub ComboBox2_Change()
Call ListBoxSet(2)
End Sub
'-------------------------------
Private Sub ComboBox3_Change()
Call ListBoxSet(3)
End Sub
'------共通ListBoxセット----------------
Private Sub ListBoxSet(No As Integer)
Dim ico As Long
ico = Me.Controls("ComboBox" & No).ListIndex + 1
With ThisWorkbook.Worksheets("Sheet1")
Me.Controls("ListBox" & No).List = .Range(.Cells(2, ico), _
.Cells(.Cells(Rows.Count, ico).End(xlUp).Row, ico)).Value
End With
End Sub
'--------------------------------------
以上。
onlyromさん、ありがとうございました。自分の想像してた通りの物が作ることができました(^_^)
とても助かりました。
お礼の返事がだいぶ遅れてしまってすいませんでした。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
例外処理のフローチャートの記...
-
”:”がいっぱいの文について。
-
perlの構文でカンマの意味が分...
-
サブルーチンを認識しません。
-
プログラムの「生産性」について
-
Excel VBAで、ユーザーフォー...
-
オフコン(富士通Kシリーズ)...
-
VBでグローバル変数を宣言するには
-
LCD ディスプレイを Raspberry ...
-
VBSがコンパイルエラーになりま...
-
Excel VBAでリンク切れをチェッ...
-
Excel VBAで、ユーザーフォーム...
-
Perlソースコードをコンパイル...
-
Excel VBA 定義されたプロージ...
-
acwzlibとは?
-
エクセルVBAでシートモジュール...
-
perlを使って音(sound.wav)を...
-
モジュールの最大数はいくつな...
-
'Range'メソッドは失敗しました
-
Form間の値の渡し方
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
例外処理のフローチャートの記...
-
Excel VBAで、ユーザーフォー...
-
モジュールとサブルーチン
-
オフコン(富士通Kシリーズ)...
-
COBOLで、Shellを起動するには?
-
ExcelVBA AddinでOnAction
-
VBAで2重のDoLoop関数から抜け...
-
”:”がいっぱいの文について。
-
ブラウザを閉じた時にサブルー...
-
ACCESSのVBAでPrivate Sub ~en...
-
サブルーチンを認識しません。
-
CASLIIの問題
-
配列と互換性のない型の要素に...
-
Attempt to free unreferenced ...
-
fortran95実行エラー
-
サブルーチンの中にサブルーチ...
-
exit aaaa();
-
perlの構文でカンマの意味が分...
-
初心者です。Perlではどんな時...
-
C#でJavaAPIを使用方法
おすすめ情報