ユーザーフォームのコンボボックスにセルの値を入力してファイル検索する

Excel VBA すべて

今回はセルに入力した値をユーザーフォームのコンボボックスに登録してファイルの検索する方法を紹介します。

まずユーザーフォームを作成します、「開発」タブ →「Visual Basic」でVBE(Visual Basic Editor)の画面を表示して「挿入」メニュー → 「ユーザーフォーム」でUserForm1を作成します。

ツールボックスが表示されていないときはVBEの「表示」メニュー →「ツールボックス」で表示します。

ツールボックスから「ラベル」と「コンボボックス」と「コマンドボタン」をユーザーフォームに配置します。

ラベルのプロパティウィンドウでCaptionを「ファイル名入力」にして、コマンドボタンのプロパティウィンドウでCaptionを「検索開始」にします。

「検索開始」のコマンドボタンをダブルクリックして下のコードを貼り付けます。

Private Sub UserForm_Initialize()      'ユーザーフォームが表示されるタイミングでフォームの内容を準備するイベント。

Dim i As Long

For i = 1 To Cells(Rows.Count, "A").End(xlUp).Row 'A列の1行目からデータがある最後の行を取得して繰り返し処理を行う。

ComboBox1.AddItem Cells(i, 1) 'セルの値をコンボボックスに入力して行きます。

Next i

End Sub

Private Sub CommandButton1_Click() 'コマンドボタンがクリックされたときに実行されるイベント。

Dim name As String
name = UserForm1.ComboBox1.Text

Dim ブック As Workbook
Dim Flag As Boolean

For Each ブック In Workbooks '検索したファイルが開いているか調べます。

If ブック.name = name & ".xlsx" Then Flag = True

Next ブック

If Flag = True Then '検索したファイルが開いていた場合の処理。

MsgBox "「" & name & "」" & "のファイルは既に開いているので最前面に表示します。"

Workbooks(name & ".xlsx").Activate '開いていたファイルを最前面に表示します。

Unload UserForm1 'ユーザーフォームを閉じます。

Exit Sub

Else '検索したファイルが開いていない場合はファイルを開きます。

If Dir(ThisWorkbook.Path & "\フォルダ\" & name & ".xlsx") <> "" Then 'ファイルがフォルダ内にあるか調べます。

Workbooks.Open Filename:=ThisWorkbook.Path & "\フォルダ\" & name & ".xlsx" 'ファイルを開きます。

Unload UserForm1 'ユーザーフォームを閉じます。

Else 'ファイルがフォルダ内に無いときはメッセージを表示します。

Unload UserForm1

MsgBox "ファイルはフォルダ内にありません。"

UserForm1.Show

End If

End If

End Sub

エクセルのSheet1にボタンを作成してボタンを押したときにユーザーフォームを表示出来るようにします。VBEの「挿入」メニュー →「標準モジュール」で標準モジュールを作成しModule1に下の「フォーム表示」のコードを貼り付けます。

Sub フォーム表示()

UserForm1.Show

End Sub

そしてエクセルのSheet1を表示し「開発」タブ → 「挿入」→ 「フォームコントロール」→「ボタン」でボタンを作成して「フォーム表示」のマクロをボタンに登録します。

検索するファイル名をセルのA列に入力します。

これでボタンをクリックしてユーザーフォームを表示し、右側の矢印ボタンを押すとコンボボックスのリストにセルに入力した値が登録されるようになりました。

「UserForm_Initialize」の「For i」の繰り返し処理で、文字データの最後の行を自動で取得するようにしているので、セルのA列のファイル名を増やしてもコードの修正をする必要はありません。

プログラムの流れとしては、最初に「UserForm_Initialize」でコンボボックスに表示する項目を登録します、次にコマンドボタンをクリックしたら検索したファイルが開いているか調べて開いていた場合はファイルを最前面に表示し、検索したファイルが開いていない場合はファイルがフォルダ内にあるか調べてからファイルを開くという手順で行っています。

2024年8月に投稿したコンボボックスを使った記事は下のリンクをクリックすると確認できるので参考にしてみてください。

こちらの関連する記事もご覧ください。

コメント