ご返信ありがとうございます! 例②のサンプルプログラムを作ってみました。 Private Sub ComboBox1_Change() Me.ComboBox2.Clear Dim colLast, i As Long With Worksheets("データ") colLast = .Cells(1, Columns.Count).End(xlToLeft).Column For i = 1 To colLast If Me.ComboBox1.Value = .Cells(1, i).Value Then Dim rowLast, j As Long rowLast = .Cells(Rows.Count, i).End(xlUp).Row For j = 2 To rowLast Me.ComboBox2.AddItem .Cells(j, i).Value Next End If Next End With End Sub Private Sub UserForm_Initialize() Dim colLast, i As Long With Worksheets("データ") colLast = .Cells(1, Columns.Count).End(xlToLeft).Column For i = 1 To colLast Me.ComboBox1.AddItem .Cells(1, i).Value Next End With End Sub もしプログラムでわからないところがあればお聞きください!
初めまして、Excelマクロ初心者です。プログラムの組み方等、とても分かりやすくて参考にさせていただいています。
仕事で利用するため、今回のようなフォームを応用して以下のフォームを作成しているのですが、、
①部署②担当者となるコンボボックスを2つ作成し、どちらもシートからそれぞれデータを引っ張ってくる。
そして、①部署のコンボボックス選択に応じて ②担当者名のコンボボックスの表示を変える
というようフォームを作成するには、どのように組んだら良いですか?
(欲を言えば、データシートの部署名・担当者名が増えても自動でデータ幅が増えるようにしておきたい)
色々組んで行ってみたのですが、途中でエラーとなって進まずで(^^;
何かアドバイスいただけると、幸いです。
こんにちは!
ご視聴ありがとうございます。
フォームに
①部 署を選択するコンボボックスと
②担当者を選択するコンボボックスが配置されていて、
①を選択したときに、選択した部署に所属している担当者を
②のコンボボックスに表示したいということでよろしいでしょうか?
その場合、データシートに部署名と担当者名がセットで入力されていれば可能です。
①のコンボボックスの値が変更された時に実行されるプログラムを入力することになります。
その時に、①の部署とデータシートに入力されている部署名の列を比較して、部署名が一致した場合、②のコンボボックスに担当者名を追加します。
的外れなことを言っていたら申し訳ございません。
Akio 's ご返信ありがとうございます!
ご回答いただいた内容で合っています👍
データとしては
例① 1 2 例② 1 2
1 A部署 Aさん A部署 B部署
2 A部署 Bさん Aさん Cさん
3 B部署 Cさん Bさん
こんな作り方でしょうか?
例①、②でいくと①の方が組みやすいですか?
『こうなっていたら、今後楽だなー』
と考えていたのが、②のデータ配列で
各部署の担当者に増減あったとしても、
フォームのコンボボックス内の選択肢が
反映されたらな〜と考えてみたのですが。。難しいでしょうか🤔
ご返信ありがとうございます!
例②のサンプルプログラムを作ってみました。
Private Sub ComboBox1_Change()
Me.ComboBox2.Clear
Dim colLast, i As Long
With Worksheets("データ")
colLast = .Cells(1, Columns.Count).End(xlToLeft).Column
For i = 1 To colLast
If Me.ComboBox1.Value = .Cells(1, i).Value Then
Dim rowLast, j As Long
rowLast = .Cells(Rows.Count, i).End(xlUp).Row
For j = 2 To rowLast
Me.ComboBox2.AddItem .Cells(j, i).Value
Next
End If
Next
End With
End Sub
Private Sub UserForm_Initialize()
Dim colLast, i As Long
With Worksheets("データ")
colLast = .Cells(1, Columns.Count).End(xlToLeft).Column
For i = 1 To colLast
Me.ComboBox1.AddItem .Cells(1, i).Value
Next
End With
End Sub
もしプログラムでわからないところがあればお聞きください!
Akio 's うぁ…すごいですね!
1個ずつ理解しながら…と思いましたが、利用日まで時間がないので
そのまま打ち込んでみました。
ユーザーフォームinitializeからのマクロで、『function または変数が必要です』というエラーが出て、additemが青く反転して表示、private sub〜initializeまでが黄色く反転されました。
変数の指定(?)が必要という事でしょうか…?
申し訳ございません。もう一度実行してみたのですが特に問題なくプログラムを実行できました(汗)
ちゃんちぃ8er さんのプログラムをコメント欄にコピー&ペーストしていただいてもよろしいでしょうか?
よろしくお願いします。