VBA では、メソッド(Method) を実行すると、何らかの結果(戻り値)を返すことがあります。
この戻り値を適切に取得・活用することで、処理の結果を確認したり、エラーハンドリングを行うことができます。
本記事では、VBA におけるメソッドの戻り値とは何か、どのように取得し、活用するのか を詳しく解説します。
目次
メソッドの戻り値(返り値)とは?
メソッド(Method)とは、オブジェクトに対して実行できる操作(関数やプロシージャ)のこと です。
メソッドを実行すると、処理結果として戻り値(返り値)が返されることがあります。
✅ 戻り値を持つメソッドの例
メソッド | オブジェクト | 戻り値の型 | 説明 |
---|---|---|---|
Find | Range | Range | セルを検索し、見つかったセルを返す |
MsgBox | Application | VbMsgBoxResult | ユーザーの選択結果を返す |
GetOpenFilename | Application | String | ユーザーが選択したファイル名を返す |
InputBox | Application | String | ユーザーが入力した値を返す |
Dir | FileSystem | String | ファイル名を取得 |
📌 戻り値を受け取らないと、メソッドの実行結果を活用できません!
📌 戻り値を変数に格納することで、後の処理に活かせます!
メソッドの戻り値を取得する方法
メソッドの戻り値は、変数に代入して取得する のが基本です。
✅ 戻り値を取得する基本構文
Dim 変数名 As データ型
変数名 = オブジェクト.メソッド(引数)
・Find メソッドの戻り値を取得
Find
メソッドは、指定した値を検索し、見つかったセル(Range
)を返します。
【コード例】セルを検索し、見つかった場合のアドレスを取得
Sub FindExample()
Dim ws As Worksheet
Dim foundCell As Range
Set ws = ThisWorkbook.Sheets("Sheet1")
Set foundCell = ws.Range("A:A").Find(What:="検索文字列", LookAt:=xlWhole)
If Not foundCell Is Nothing Then
Debug.Print "見つかったセルのアドレス: " & foundCell.Address
Else
Debug.Print "該当セルなし"
End If
End Sub
✅ セルが見つかった場合は Range
オブジェクトとして取得可能!
✅ 見つからない場合は Nothing
になるため、If Not foundCell Is Nothing
で確認!
・MsgBox の戻り値を取得
MsgBox
は、ダイアログボックスでユーザーに選択肢を与え、選択結果を戻り値として返します。
【コード例】ユーザーの選択を取得
Sub MsgBoxExample()
Dim userChoice As VbMsgBoxResult
userChoice = MsgBox("処理を続けますか?", vbYesNo + vbQuestion, "確認")
If userChoice = vbYes Then
Debug.Print "ユーザーが [はい] を選択しました。"
Else
Debug.Print "ユーザーが [いいえ] を選択しました。"
End If
End Sub
✅ MsgBox
の戻り値は VbMsgBoxResult
(定数)で受け取れる!
✅ vbYes
や vbNo
で条件分岐が可能!
・GetOpenFilename の戻り値を取得
GetOpenFilename
メソッドを使うと、ユーザーが選択したファイルのパスを取得できます。
【コード例】選択したファイルパスを取得
Sub GetFileExample()
Dim filePath As String
filePath = Application.GetOpenFilename("Excelファイル (*.xlsx), *.xlsx")
If filePath <> "False" Then
Debug.Print "選択されたファイル: " & filePath
Else
Debug.Print "キャンセルされました。"
End If
End Sub
✅ ユーザーがファイルを選択すると、そのパスが String
で取得可能!
✅ キャンセル時は "False"
が返るため、比較して判定!
【VBA】フォルダを指定(ダイアログ・全て・ファイル名の一部指定)でファイルを開く方法
・InputBox の戻り値を取得
InputBox
は、ユーザーが入力した値を String
型で取得 できます。
【コード例】ユーザーが入力したデータを取得
Sub InputBoxExample()
Dim userInput As String
userInput = InputBox("名前を入力してください:", "入力画面")
If userInput <> "" Then
Debug.Print "入力された名前: " & userInput
Else
Debug.Print "入力がキャンセルされました。"
End If
End Sub
✅ 入力があれば String
として取得、未入力やキャンセルの場合は空文字!
・Dir の戻り値を取得
Dir
メソッドを使うと、特定のファイルやフォルダの有無を確認 できます。
【コード例】指定フォルダ内のファイル一覧を取得
Sub ListFiles()
Dim fileName As String
Dim folderPath As String
folderPath = "C:\Temp\"
fileName = Dir(folderPath & "*.xlsx") ' 最初のファイル取得
Do While fileName <> ""
Debug.Print "ファイル: " & fileName
fileName = Dir ' 次のファイル取得
Loop
End Sub
✅ Dir
は、呼び出すたびに次のファイルを取得する!
✅ Do While fileName <> ""
で繰り返し取得!
まとめ
メソッド | 戻り値の型 | 活用例 |
---|---|---|
Find | Range | セル検索結果を取得 |
MsgBox | VbMsgBoxResult | ユーザーの選択を取得 |
GetOpenFilename | String | ユーザーが選択したファイルパスを取得 |
InputBox | String | ユーザーが入力した文字を取得 |
Dir | String | フォルダ内のファイル一覧を取得 |
💡 VBA のメソッドの戻り値を活用することで、より柔軟な処理が可能に!
✅ 戻り値を変数に格納して活用!
✅ 戻り値が Nothing
や "False"
になるケースも考慮!
✅ 条件分岐 (If
文) や Loop
で戻り値を使いこなそう!