Excel フォーム小技編1!フォームのコンボボックスとリストボックスにシートからデータを一括で追加!

Поделиться
HTML-код
  • Опубликовано: 5 ноя 2024

Комментарии • 23

  • @mittan0314
    @mittan0314 4 года назад

    初めまして、Excelマクロ初心者です。プログラムの組み方等、とても分かりやすくて参考にさせていただいています。
    仕事で利用するため、今回のようなフォームを応用して以下のフォームを作成しているのですが、、
    ①部署②担当者となるコンボボックスを2つ作成し、どちらもシートからそれぞれデータを引っ張ってくる。
    そして、①部署のコンボボックス選択に応じて ②担当者名のコンボボックスの表示を変える
    というようフォームを作成するには、どのように組んだら良いですか?
    (欲を言えば、データシートの部署名・担当者名が増えても自動でデータ幅が増えるようにしておきたい)
    色々組んで行ってみたのですが、途中でエラーとなって進まずで(^^;
    何かアドバイスいただけると、幸いです。

    • @akios8492
      @akios8492  4 года назад

      こんにちは!
      ご視聴ありがとうございます。
      フォームに
      ①部 署を選択するコンボボックスと
      ②担当者を選択するコンボボックスが配置されていて、
      ①を選択したときに、選択した部署に所属している担当者を
      ②のコンボボックスに表示したいということでよろしいでしょうか?
      その場合、データシートに部署名と担当者名がセットで入力されていれば可能です。
      ①のコンボボックスの値が変更された時に実行されるプログラムを入力することになります。
      その時に、①の部署とデータシートに入力されている部署名の列を比較して、部署名が一致した場合、②のコンボボックスに担当者名を追加します。
      的外れなことを言っていたら申し訳ございません。

    • @mittan0314
      @mittan0314 4 года назад

      Akio 's ご返信ありがとうございます!
      ご回答いただいた内容で合っています👍
      データとしては
      例① 1 2 例② 1 2
      1 A部署 Aさん A部署 B部署
      2 A部署 Bさん Aさん Cさん
      3 B部署 Cさん Bさん
      こんな作り方でしょうか?
      例①、②でいくと①の方が組みやすいですか?
      『こうなっていたら、今後楽だなー』
      と考えていたのが、②のデータ配列で
      各部署の担当者に増減あったとしても、
      フォームのコンボボックス内の選択肢が
      反映されたらな〜と考えてみたのですが。。難しいでしょうか🤔

    • @akios8492
      @akios8492  4 года назад

      ご返信ありがとうございます!
      例②のサンプルプログラムを作ってみました。
      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
      もしプログラムでわからないところがあればお聞きください!

    • @mittan0314
      @mittan0314 4 года назад

      Akio 's うぁ…すごいですね!
      1個ずつ理解しながら…と思いましたが、利用日まで時間がないので
      そのまま打ち込んでみました。
      ユーザーフォームinitializeからのマクロで、『function または変数が必要です』というエラーが出て、additemが青く反転して表示、private sub〜initializeまでが黄色く反転されました。
      変数の指定(?)が必要という事でしょうか…?

    • @akios8492
      @akios8492  4 года назад

      申し訳ございません。もう一度実行してみたのですが特に問題なくプログラムを実行できました(汗)
      ちゃんちぃ8er さんのプログラムをコメント欄にコピー&ペーストしていただいてもよろしいでしょうか?
      よろしくお願いします。