Excel VBA InputBox メソッドの基礎から応用、実務的なサンプルコード
Excel VBAには、データ入力を行うための機能としてInputBoxメソッドがあります。
InputBoxメソッドを利用することで、ユーザーからデータを入力してもらうことができます。この記事では、InputBoxメソッドの基礎的な使い方から応用的な使い方、そして実務的なサンプルコードを紹介します。
InputBoxメソッドの基礎
InputBoxメソッドは、以下のような構文で使用します。
1 |
InputBox(prompt[,title][,default][,xpos][,ypos][,helpfile,context]) |
ここで、各引数の意味は以下の通りです。
- prompt : ユーザーに表示されるメッセージ
- title : InputBoxウィンドウのタイトル
- default : 初期値
- xpos : InputBoxウィンドウのX座標
- ypos : InputBoxウィンドウのY座標
- helpfile : ヘルプファイル名
- context : ヘルプトピックのID
以下は、InputBoxメソッドを利用した基本的なサンプルコードです。
1 2 3 4 5 |
Sub BasicInputBox() Dim name As String name = InputBox("名前を入力してください") MsgBox "こんにちは、" & name & "さん" End Sub |
このコードでは、InputBoxメソッドを利用して、ユーザーに名前の入力を促します。
その後、入力された名前をメッセージボックスで表示します。ここで、変数nameには、InputBoxで入力された文字列が格納されます。
InputBoxメソッドの応用
InputBoxメソッドは、基本的に文字列を入力するために使用しますが、数値や日付などのデータ型に変換することもできます。
以下は、InputBoxメソッドを利用して数値の入力を促し、その数値に10を加算して表示するサンプルコードです。
1 2 3 4 5 |
Sub NumberInputBox() Dim num As Double num = Val(InputBox("数値を入力してください")) MsgBox "入力された数値に10を加算した結果は、" & num + 10 & "です" End Sub |
ここで、Val関数を利用して、InputBoxで入力された文字列を数値型に変換しています。
また、InputBoxメソッドは、複数の入力項目を設定することもできます。以下は、InputBoxメソッドを利用して名前と年齢の入力を促し、その情報を表示するサンプルコードです。
1 2 3 4 5 6 7 |
Sub MultiInputBox() Dim name As String Dim age As Integer name = InputBox("名前を入力してください") age = Val(InputBox("年齢を入力してください")) MsgBox "名前:" & name & vbCrLf & "年齢:" & age End Sub |
ここで、変数nameには、名前の入力項目から入力された文字列が格納され、変数ageには、年齢の入力項目から入力された文字列を数値型に変換した結果が格納されます。
その後、MsgBox関数を利用して、入力された情報を表示しています。
実務的なサンプルコード
InputBoxメソッドは、Excel VBAで頻繁に使用される機能のひとつです。
ここでは、実務的なサンプルコードを紹介します。
セルの値を変更する
以下のサンプルコードでは、InputBoxメソッドを利用して、ユーザーから新しい値を入力してもらい、その値で指定したセルの値を変更します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
Sub ChangeCellValue() Dim inputValue As Variant Dim targetCell As Range Set targetCell = Application.InputBox("変更するセルを選択してください", Type:=8) If Not targetCell Is Nothing Then inputValue = InputBox("新しい値を入力してください", targetCell.Value) If inputValue <> "" Then targetCell.Value = inputValue MsgBox "セル " & targetCell.Address & " の値が変更されました" End If End If End Sub |
ここで、Application.InputBoxメソッドを利用して、セルの選択を促します。
その後、InputBoxメソッドを利用して、新しい値の入力を促します。
入力された値が空文字列でない場合に、セルの値を変更し、メッセージボックスで変更されたことを通知します。
ファイルの保存先を選択する
以下のサンプルコードでは、InputBoxメソッドを利用して、ユーザーからファイルの保存先を選択してもらい、そのパスを取得します。
1 2 3 4 5 6 7 8 9 |
Sub SelectSavePath() Dim savePath As String savePath = Application.GetSaveAsFilename(FileFilter:="Excel Files (*.xlsx), *.xlsx") If savePath <> "" Then MsgBox "ファイルの保存先は、" & savePath & " です" End If End Sub |
ここで、Application.GetSaveAsFilenameメソッドを利用して、ファイルの保存先を選択するダイアログを表示します。
その後、選択されたパスを取得し、メッセージボックスで表示します。また、FileFilter引数を利用することで、保存可能なファイル形式を制限することができます。
ファイルを開く
以下のサンプルコードでは、InputBoxメソッドを利用して、ユーザーから開くファイルのパスを入力してもらい、そのパスを利用してファイルを開きます。
1 2 3 4 5 6 7 8 9 |
Sub OpenFile() Dim filePath As Variant filePath = Application.GetOpenFilename(FileFilter:="Excel Files (*.xlsx), *.xlsx") If filePath <> False Then Workbooks.Open Filename:=filePath End If End Sub |
ここで、Application.GetOpenFilenameメソッドを利用して、ファイルを開くダイアログを表示します。
その後、選択されたパスを利用して、ファイルを開きます。
まとめ
Excel VBAのInputBoxメソッドについて、基本的な使い方から応用例まで紹介しました。
InputBoxメソッドを使うことで、ユーザーからの入力を取得し、それを利用してVBAの処理を実行することができます。
また、実務的なサンプルコードを通して、InputBoxメソッドの活用方法を学びました。Excel VBAでの開発において、InputBoxメソッドを上手に活用して、より効率的な開発を行ってください。
コメント