介紹如何在 Excel 中使用 VBA 的 InputBox
資料輸入對話方塊,建立視窗讓使用者輸入資料。
InputBox
資料輸入對話方塊
在 VBA 程式中如果需要要求使用者即時輸入資料,可以使用 InputBox
建立一個對話方塊,讓使用者直接輸入:
' 建立資料輸入對話方塊,取得使用者輸入的資料 UserData = InputBox("請輸入資料:") ' 顯示輸入的資料 MsgBox "您輸入的資料是:" & UserData
在程式執行時就會跳出一個對話視窗,讓使用者輸入資料:
使用者輸入資料之後,VBA 程式就可以取得輸入的內容:
自訂對話方塊
InputBox
其實還有許多可自訂的選項可用:
InputBox(提示訊息, [標題], [預設值], [X座標], [Y座標])
除了第一個提示訊息
參數一定要指定之外,其餘的參數都是選填的。
以下是一個自訂對話方塊標題、預設值、位置的範例:
' 自訂對話方塊標題、預設值、位置 UserData = InputBox("請輸入資料:", "使用者輸入", "OfficeGuide", 1500, 500)
執行的結果會像這樣:
判斷未輸入、取消輸入資料
如果需要判斷使用者是否有在 InputBox
中輸入資料,可以使用以下方式:
UserData = InputBox("請輸入資料:") If StrPtr(UserData) = 0 Then MsgBox "您取消輸入。" ElseIf UserData = vbNullString Then MsgBox "您沒有輸入資料。" Else MsgBox "您輸入的資料是:" & UserData End If
這樣就可以清楚判斷出使用者按下「取消」、或是未輸入任何資料就按下「確定」的狀況。
Application.InputBox
資料輸入對話方塊
資料輸入對話方塊除了一般的 InputBox
之外,還有另外一種 Application.InputBox
,兩者的功能與用法都非常相似,主要的小差異是 Application.InputBox
多了可以指定輸入資料類型的功能:
InputBox(提示訊息, [標題], [預設值], [X座標], [Y座標], [Type:=類型代碼])
以下是可用的類型代碼
:
值 | 描述 |
---|---|
0 | 公式 |
1 | 數字 |
2 | 文字(字串) |
4 | 邏輯值(True 或 False ) |
8 | 儲存格參照,視為 Range 物件 |
16 | 錯誤值,例如 #N/A |
64 | 陣列值 |
假設我們想讓使用者只能輸入數字:
' 輸入數字 UserData = Application.InputBox("請輸入數字:", Type:=1)
如果使用者輸入的資料不是數字,就會出現這樣的提示訊息:
選擇範圍、計算總和範例
以下是一個利用 Application.InputBox
讓使用者在 Excel 表格中選擇範圍,並計算範圍內所有數值總和的範例:
Dim rng As Range Dim cel As Range Dim s As Integer ' 選擇範圍 Set rng = Application.InputBox("請選擇範圍:", Type:=8) ' 計算總和 s = 0 For Each cel In rng.Cells s = s + cel.Value Next cel MsgBox "總和:" & s
執行時使用者可以直接以滑鼠選擇 Excel 儲存格範圍:
選擇範圍之後,就會計算出數值總和:
參考資料:Office 官方網頁、Access-Excel