【Excel VBA】セルをクリックしたときインプットボックスを表示しファイル検索をする

Excel VBA インプットボックス

2024年8月に投稿した「インプットボックスでファイルの検索をする」の記事では、インプットボックスを表示する場合は「開発タブ」→「マクロの表示」→「マクロ名を選択」→「実行ボタン」を押す必要がありました。

今回は、あらかじめセルに検索するファイル名を入力しておき、ファイル名をマウスで右クリックしたときにインプットボックスを表示する方法を紹介したいと思います。

先ずは、シートを右クリックしたときに処理を実行する「Worksheet_BeforeRightClick」イベントを「Sheet1」に作成します。

VBAProjectの「Sheet1」をダブルクリックしてSheet1のコードウィンドウを表示し、次のコードをコピーして貼り付けます。

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)  'セルを右クリックしたときのイベント。

If Not Intersect(Target, Me.UsedRange.Columns("A")) Is Nothing Then '選択されたセルがA列で値が入力されている場合は。

Cancel = True '右クリックしたときの右クリックメニューの表示をキャンセルする。
Call ファイルの検索 '標準モジュールの「ファイルの検索」を呼び出しインプットボックスの表示する。

Else '値が入力されていないセルが選択された場合はプログラムを終了します。

Cancel = True '右クリックしたときの右クリックメニューの表示をキャンセルする。

End If

End Sub

次に「標準モジュール」の「Module1」をダブルクリックしてコードウィンドウを表示し、次のコードをコピーして貼り付けます。

Sub ファイルの検索()

Dim txtbox_name As String
Dim name As String

txtbox_name = ActiveCell.Value '変数「txtbox_name」に右クリックしたセルの値を代入します。
name = InputBox("検索するファイル名を入力してください。", , txtbox_name) 'インプットボックスの表示する。

If StrPtr(name) = 0 Then 'InputBox関数にStrPtr関数を組み合わせてキャンセルボタンが押されたかどうかを判定する。

MsgBox "キャンセルボタンが押されました。"
Exit Sub

ElseIf name = "" Then 'ファイル名が入力されていないときはメッセージを表示しプログラムを終了します。

MsgBox "ファイル名が入力されていません。"
Exit Sub

End If

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 '開いていたファイルを最前面に表示します。

Exit Sub

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

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

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

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

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

End If

End If

End Sub

2024年8月に紹介した「インプットボックスでファイルの検索をする」の記事では、InputBox関数の設定が「name = InputBox(“検索するファイル名を入力してください。”)」となっていましたが、それを「name = InputBox(“検索するファイル名を入力してください。”, , txtbox_name)」とすることで右クリックしたセルの値をインプットボックスのテキストボックスに入力するようにしています。

InputBox関数の基本構文

InputBox(prompt, [title], [default], [xpos], [ypos])

今回のポイント

インプットボックス関数で[default]の値を設定することで入力欄(テキストボックス)の初期値を設定することができます。

これでセルに入力したファイル名を右クリックしてインプットボックスを表示するとテキストボックスにファイル名が自動で入力されてファイル検索ができるようになりました。♪(˶ᵔᴗᵔ˵)♪

コメント