VBA InputBox – ユーザーからの入力を取得する
In this Article
このチュートリアルでは、VBAの入力ボックスを使用してユーザーから入力を取得する方法を説明します。
VBAのInputBoxを使用すると、入力ボックスを表示してユーザーに情報を入力させることができます。 こうして得た情報は、VBAコードやExcelワークシートで使用することができます。
VBA InputBoxと変数
VBAコードで変数を宣言し、入力ボックスに入力された情報を保存することができます。 そして、この変数をコード内で使用することができます。 InputBoxから得たい情報の種類によって、テキストを返す変数(stringまたはvariant変数)、数値を返す変数(integer、long、doubleまたはsingle変数)を指定することができます。
文字列変数とInputBox
ここでは、データが文字列変数に返される入力ボックスを作成する方法を説明します。
Dim strInput as String
strInput = InputBox("InputBoxの例です", "任意のタイトル", "ここに入力してください")
まず、変数を宣言します。この変数には、ユーザーが入力した値が代入されます。 入力ボックスが文字列(アルファベットや数字も含む)を受け取ることができるように、変数の型にはStringを使用しています。
数値変数とInputBox
数値変数を宣言した場合、入力ボックスには数字のみを入力する必要があります。
Dim iInput As Integer
iInput = InputBox("数値を入力してください", "請求書番号を作成します", 1)
まず、数値変数を整数型変数として宣言します。 そして、入力ボックスにデフォルト値である1を入れることもできます。
もし、数値の代わりに文字列を入力してOKをクリックすると、数値変数が文字列を受け付けないため、Type Mismatch Errorが発生します。
ユーザーから入力を得る
ここでは、InputBoxの最も一般的な機能を使用した別の例を示します。
次のコードは3つのことを行います。
1. InputBoxで入力を促し、変数に代入する
2. 入力を確認し、確認できない場合はサブを終了する
3. 入力された内容をメッセージボックスで返す
Public Sub MyInputBox()
Dim MyInput As String
MyInput = InputBox("InputBoxの例です", "任意のタイトル", "ここに入力してください")
If MyInput = "ここに入力してください" Or MyInput = "" Then
Exit Sub
End If
MsgBox "変数MyInputBoxのテキストは " & MyInput
End Sub
入力をExcelシートに戻す
入力ボックスに入力した内容を、Excelシートの特定のセルに戻すことができます。
Range("P1") = InputBox("名前を入力してください", "名前の入力", "ここに名前を入力してください")
また、変数を使用して入力データをExcelシートに返すこともできます。
Sub EnterNumber()
On Error Resume Next
Dim dblAmount As Double
dblAmount = InputBox("必要な量を入力してください", "数値を入力")
If dblAmount <> 0 Then
Range("A1") = dblAmount
Else
MsgBox "数値が入力されていません!"
End If
End Sub
上の例では、数字を入力するように要求されています。 数値を入力すると、変数 dblAmount は、ExcelシートのセルA1に数値を入力します。 しかし、数値を入力しなかった場合は、メッセージボックスが表示され、数値が入力されていないことがわかるので、セルA1には何も入力されません。
Access VBAにおけるInputBoxの使用
メッセージボックスの形でユーザー入力を返す場合、AccessでもExcelと全く同じように機能します。
しかし、ユーザーの入力をデータベースに戻したい場合は、Excelで使用されているRangeオブジェクトではなく、Recordsetオブジェクトを使用する必要があります。
Sub EnterInvoiceNumber()
Dim dbs As Database
Dim rst As Recordset
Set dbs = CurrentDb
Set rst = dbs.OpenRecordset("tblMatters", dbOpenDynaset)
With rst
.AddNew
!InvNo = InputBox("Please enter the Invoice Number", "INVOICE NUMBER GENERATION", 1)
.Update
End With
rst.Close
Set rst = Nothing
Set dbs = Nothing
End Sub
VBAのコーディングが簡単に
VBAのコードをオンラインで検索するのはもうやめましょう。AutoMacro – A VBA Code Builderは、初心者が最小限のコーディング知識でゼロから手順をコーディングできるだけでなく、すべてのユーザーにとって時間の節約に役立つ多くの機能を備えています! もっと詳しく