
VBA初心者です。よろしくお願いいたします。
Excelでユーザーフォームのコンボボックスを連動させたいのですが上手く出来ません。
連動させたいマスタがsheet1〜3に別々にあります。
sheet1部署
A列 B列 C列 D列
ID 部署コード 部署名 部署属性
sheet2担当者
A列 B列 C列 D列 E列
ID 担当者コード 担当者名 部署コード 部署名
sheet3科目
A列 B列 C列 D列
ID 科目コード 科目名 部署属性
コンボボックス1で部署を選択すると、その部署の担当者リストをコンボボックス2に表示。さらにその部署の部署属性の科目をコンボボックス3に表示させたいです。
つたない説明で申し訳ありません。どうぞよろしくお願いいたします。
No.6ベストアンサー
- 回答日時:
こんばんは!
横からお邪魔します。
コンボボックスを使うというコトはすべての列内に重複するデータがある!というコトですかね?
重複がないのであれば、コンボボックス2とコンボボックス3はテキストボックスで良いと思うのですが・・・
(重複がある場合のコンボボックス3の処理がよく判りません)
とりあえずやってみました。
Dim i As Long
Dim c As Range
Private Sub UserForm_Initialize()
With Worksheets("Sheet1")
For i = 2 To .Cells(Rows.Count, "C").End(xlUp).Row
ComboBox1.AddItem (.Cells(i, "C"))
Next i
End With
End Sub
Private Sub ComboBox1_Change()
ComboBox2.Clear
With Worksheets("Sheet2")
For i = 2 To .Cells(Rows.Count, "E").End(xlUp).Row
If .Cells(i, "E") = ComboBox1 Then
ComboBox2.AddItem (.Cells(i, "C"))
End If
Next i
End With
ComboBox3.Clear
Set c = Worksheets("Sheet1").Range("C:C").Find(what:=ComboBox1, LookIn:=xlValues, lookat:=xlWhole)
With Worksheets("Sheet3")
For i = 2 To .Cells(Rows.Count, "D").End(xlUp).Row
If .Cells(i, "D") = c.Offset(, 1) Then
ComboBox3.AddItem (.Cells(i, "D"))
End If
Next i
End With
End Sub
※ ユーザーフォームを立ち上げ時点からのコードを記載しています。
(立ち上げ時にコンボボックス1にデータを格納している)
※ 一発で解決!とはいかないように思えますが
まずはこの程度で・・・m(_ _)m
ありがとうございます!まさにやりたかった事でした。具体的にコードも書いていただけて大変助かりました。
すみません「すべての列内で重複」というのがよくわからなかったのですが、やりたかった事は現在手書きで記入される伝票で、部署・担当者・科目の紐付けが正しいかチェックが必要なのですが、実際のデータは部署が30以上・担当者が100名以上、科目が同じ科目でも部署の属性によって2つ以上存在してチェックがとても大変でしたので、入力方式で正しい紐づき以外が選択できないようにしたかったのです。
今回の質問で教えていただいたコードや関数が自分でも理解出来るよう、これを機にもう少し勉強したいと思います。
No.4
- 回答日時:
Sheet1!$A8を選択された位置は入力位置ではないです。
一時的に表示させる位置(sheet3から参照される)
上下と横にコピーでした
sheet1!
はシート名なので配置する場所によります
部署コンボで値が入るセルが「選択された位置」ということでしょうか。そこに部署名を入れると数式を入れたセルに担当者名が出ました。でもユーザーフォームのコンボリストには上手く表示されません。0の行や他の部署の担当者も表示されます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excelの質問です。 重複なしの部署一覧の表を作り、各部署のセル横に各部署の社員番号をすべて抜き出 3 2023/04/26 18:14
- Visual Basic(VBA) VBA ComboBoxについて 2 2022/10/21 12:15
- JavaScript フォームが空欄の時にフォームの外をクリックすると、エラーが出るコードを調べています。 1 2023/06/25 11:51
- その他(Microsoft Office) エクセル関数使用 4 2022/07/20 10:12
- その他(パソコン・スマホ・電化製品) エクセル初心者です。 仕事でエクセルを使っていて、普段は素人でもできる簡単な関数を使ったことがある程 1 2022/05/25 11:17
- Excel(エクセル) VLOOKUP が機能しない、その原因は何 ? 8 2022/10/19 12:06
- C言語・C++・C# C言語初心者 構造体 課題について 2 2023/03/10 19:48
- Access(アクセス) AccessVBAで降順にするテーブル作成クエリを使用して作成したテーブルを削除し同一のテーブル作成 1 2023/01/06 11:17
- その他(Microsoft Office) Excel 2列の値を返す数式についてです 1 2022/11/23 22:59
- Excel(エクセル) Excelにて、行の最後のセルの値をコピーして別sheetに張りつけるVBAコードをご教授願います 3 2022/11/20 14:35
このQ&Aを見た人はこんなQ&Aも見ています
-
ユーザーフォーム 3つのコンボボックスの連動について教えてください。
Excel(エクセル)
-
コンボボックス3つを連動させたい
Visual Basic(VBA)
-
VBA コンボボックスとテキストボックスを連結させたい
Visual Basic(VBA)
-
-
4
EXCEL VBAのコンボボックスに取り込むリストについて
Excel(エクセル)
-
5
フォームテキストボックスの表示設定
Excel(エクセル)
-
6
ユーザーフォーム上にある「テキストボックス」に小数が入力できない
Excel(エクセル)
-
7
ユーザーフォームのテキストボックスに前回入力した値を表示する Excel
Visual Basic(VBA)
-
8
ユーザーフォームでのリストボックス連動(VBA)
Visual Basic(VBA)
-
9
VBAコンボボックスで選択した値をシートに転記したい
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルのVBAで集計をしたい
-
【マクロ】元データと同じお客...
-
【画像あり】オートフィルター...
-
【マクロ】数式を入力したい。...
-
Office2021のエクセルで米国株...
-
【マクロ】【相談】Excelブック...
-
vba テキストボックスとリフト...
-
【マクロ】実行時エラー '424':...
-
【マクロ】【配列】3つのシー...
-
他のシートの検索
-
【マクロ】オートフィルターの...
-
【マクロ】列を折りたたみ非表...
-
【関数】同じ関数なのに、エラ...
-
ページが変なふうに切れる
-
エクセルのリストについて
-
【マクロ】左のブックと右のブ...
-
【条件付き書式】シートの中で...
-
エクセルの関数について
-
エクセル ドロップダウンリスト...
-
9月17日でサービス終了らし...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
9月17日でサービス終了らし...
-
エクセル
-
【マクロ】WEBシステムから保存...
-
エクセルの循環参照、?
-
エクセル ドロップダウンリスト...
-
エクセルのdatedif関数を使って...
-
特定のセルだけ結果がおかしい...
-
【マクロ】A列にある、日付(本...
-
【マクロ】EXCELで読込したCSV...
-
【マクロ】アクティブセルの時...
-
【エクセル】期限アラートについて
-
iPhoneのExcelアプリで、別のシ...
-
【関数】同じ関数なのに、エラ...
-
Excelの新しい空白のブックを開...
-
【マクロ】3行に上から下に並...
-
【マクロ】宣言は、何のために...
-
VBA チェックボックスをオーバ...
-
Excelについての質問です 並べ...
-
【マクロ】アクティブセルの2...
-
【関数】不規則な文章から●●-●●...
おすすめ情報
シート名はsheet1〜3です。
sheet1
A列 B列 C列 D列
1 100 総務 スタッフ
2 200 営業1 営業
3 300 製造 製造
sheet2
A列 B列 C列 D列 E列
1 001 山田 100 総務
2 002 佐藤 200 営業1
4 004 山本 300 製造
sheet3
A列 B列 C列 D列
1 111 事務費 スタッフ
2 112 事務費 営業
3 113 事務費 製造
CNB部署「総務」を選択した場合
CNB担当者:「山田」をリストに表示
CNB科目:部署属性が「スタッフ」の科目をリストに表示
というような事がしたいのですが…。
Accessで作成出来たらよいのですが環境がないのでExcelで作れればと思い質問させていただきました。