【エクセルVBA】コンボボックスの値をシートから設定する

ExcelVBA

コンボボックスに悩む人「項目を楽に編集できないかなぁ」「誰でも削除・追加できるようにできたらいいな」

今回はこんな感じの疑問をお持ちの方に応えます。

こんにちは、Fujiya(@fujiya_xyz)です。

VBAには『コンボボックス』というテキストボックスとリストボックスが合体したパーツがありますね。リストにあらかじめキーワードなどを値を入れておくことで入力の手間を圧倒的に省くことができる便利なものです。

僕はExcelVBAのツールを職場で共有しながら使っているのですが、同僚が全員VBA言語を理解しているわけでなく、修正が必要な場合には限られた人しか操作が出来ません

例えばコンボボックスに新しい値を入力したい場合には、操作できる人間がいないと編集ができないということになります。これだと手間が増えますし、タイムリーなツールにはならないんですね

なるべく誰でも扱えるようなツールを作りたいという風に考えて、今回ご紹介するコードをツールに導入しました。といっても、全然難しいことではなく初心者レベルで出来ることなので必要な方がいましたら参考にしていただければと思います。

コンボボックスの値を誰でも編集できるようにしたい

基本的な操作として、コンボボックスに項目を表示したい場合には、VBEでAdditemメソッドを使います。
≫参考:【はじめてのExcelVBA】VBE(VisualBasicEditor)の起動方法

コンボボックスに項目を表示する

上画像のように性別コンボボックスに「男」「女」を表示するには・・・・

Private Sub UserForm_Initialize()
 性別コンボボックス.AddItem "男"
 性別コンボボックス.AddItem "女"
End Sub

こんな感じでコードを記述します。こちらについては「vba初心者向け『入力フォーム』の作り方”コード記述編”」でも書いています。

VBAの経験が少しでもあればメチャメチャ簡単なのですが、職場の中でツールを共有している場合にはVBAを全く知らないという人もたくさんいると思います。そういった人はエディタすらも開くことは難しいです、コード記述・編集なんてもってのほか。

しかしながら、セル入力やシート操作であれば多くの人が出来るでしょう。よって、シート操作で簡単にコンボボックスの編集が出来ようにしたいと思います。

設定シートを作成する

設定ソートの作成

まずはわかりやすく、シート名が「設定」というシートを作成しましょう。ぶっちゃけ、なんでもいいです。

項目を記述するリストも作成していきます。簡単なリスト表ですね。今回の場合はA~D会社ということにします。

コードを記述していく

考え方的には、先ほど作成した設定シートのリスト表の値をコンボボックスへ入れる感じです。

「for~nextステートメント」で繰り返し処理をして行きます。下のような感じです。

Private Sub UserForm_Initialize()
 With Worksheets("設定")
  For i = 4 To Worksheets("設定").Cells(Rows.Count, 2).End(xlUp).Row
  コンボボックス.AddItem Worksheets("設定").Cells(i, 2).Value
  Next
 End With
End Sub

for~nextステートメントでは、必要な回数だけ繰り返し処理をします。この場合、4行目から2列目の最終行までの繰り返しとなるので4 To Worksheets("設定").Cells(Rows.Count, 2).End(xlUp).Rowを「i」にしています。

そして、コンボボックス.AddItem Worksheets("設定").Cells(i, 2).Valueですが、設定シートの2列目4行目から同じく2列目最終行までをコンボボックスに入れるという感じです。

最後にwithステートメントを使ってシンプルにしてみます。

Private Sub UserForm_Initialize()
 With Worksheets("設定")
  For i = 4 To .Cells(Rows.Count, 2).End(xlUp).Row
  コンボボックス.AddItem .Cells(i, 2).Value
  Next
 End With
End Sub

こんな感じです。withステートメントは絶対にやる必要はありません。

実行してみると以下の様になります。

コンボボックスのテスト

実際には説明だと少しわかりずらいので、実際にサンプルコードで作ってみるほうがわかりやすいと思います。サンプルコードの使い方は「サンプルコードってどうやって使うの?【エクセルVBA初心者向け】」に書いているので参考にしてみてください。

以上の作業で、項目を削除・追加したい場合には設定シートにあるリストを編集するだけでOKになります。

シートを操作してコンボボックスを編集

リストに新しい項目を追加

さっそくテストしてみましょう。

リストの最後にE会社を追加してみます。実行してみると以下の様にコンボボックスにE会社が表示されています。

項目を追加したコンボボックス

コード的には、かなりシンプル

今回はA~D会社という4つデモですが、実際には数十個の項目を入れる場合があるかもしれません。

いくつ項目があったとしても今回のような感じでリストからの繰り返し処理にすることでコード的にはかなりシンプルになります。

といっても、すべてのコンボボックスに導入する必要はないです。なぜなら「男」「女」など絶対に変更がない項目は編集する必要がないからですね。

また、シートのリストの項目を削除・追加であれば誰でも操作が出来るというところもメリットです。

僕の職場でも導入したところ、パソコン操作が苦手な人でも出来るので業務の効率もUPしました。加えて、僕の仕事の負担も減りました。

今回の記事は以上になります。
最後まで読んでいただきましてありがとうございました。