1. 程式人生 > 實用技巧 >十一、使用者資訊互動

十一、使用者資訊互動

一、MsgBox與InputBox
1、二者均為vba.interaction函式,演示在vba裡輸入函式名時的引數;
2、Msgbox函式引數:Msgbox(提示文字,按鈕型別,標題文字,幫助檔案,幫助檔案索引), 如:MsgBox "你好", 4 + 32, "打招呼對話方塊", "C:/a.chm", 0
3、Msgbox可以有返回值,如: i =MsgBox("你好", 4 + 32, "打招呼對話方塊", "C:/a.chm", 0)
4、vba.interaction.Inputbox函式引數:Inputbox(提示文字,標題文字,預設值,左邊距,上邊距,幫助檔案,幫助檔案索引),如:
       Name = InputBox("請輸入姓名", "登陸框", "此處輸入", 100, 100, "C:/a.chm", 0),本函式對使用者輸入型別無限制,若與定義型別不同,會直接報錯

5、application.Inputbox方法引數:Inputbox(提示文字,標題文字,預設值,左邊距,上邊距,幫助檔案,幫助檔案索引,輸入型別),如:A = Application.InputBox
      ("輸入金額", "匯率計算", "此處輸入", 100, 100, "C:/a.chm", 0, 1) 。 本方法對使用者輸入型別有限制,不符的輸入型別會提示修改。

二、application.GetOpenFilename方法:顯示標準的“開啟”對話方塊,並獲取使用者檔名,而不必真正開啟任何檔案。
用法:                  GetOpenFilename(

檔案型別,優先型別,對話方塊標題,按鈕文字,是否支援多選),如:
             A=
Application.GetOpenFilename("新表,*.xlsx, 老表,*.xls", 1, "快選!","確定", False)
檔案型別:
一個指定檔案篩選條件的字串。先指定檔案型別名,再指定字尾,要成對出現。例如:"Excel檔案,*.xlsx,老表,*.xls,所有檔案,*.*"
優先型別:列出的各種檔案型別,哪種優先顯示。取值範圍為 1 到本引數的值。如果省略本引數,或本引數的值大於可用篩選條件數,則使用第1個檔案篩選條件。
注意事項:
(1)這個方法並不會真正開啟檔案,只是彈出對話方塊,並返回選定檔案的包含路徑在內的
檔名! 開啟檔案需增加程式碼:workbook.open str(見下面程式碼)
(2)使用者點“取消”,則返回“False”;若使用者選多個檔案(最後一個引數需選true),則返回多個檔名,可賦值給陣列

'使用者選定檔案後,將檔名路徑放入a1單元格
Range("a1") = Application.GetOpenFilename
'可增加open語句後直接開啟檔案 Dim str As String str = Application.GetOpenFilename Workbooks.Open str

'更常見的做法是:
Dim str As String
Dim wb As Workbook
str = Application.GetOpenFilename
("excel檔案,*.xls*")
If str <> "False" Then '避免點取消時報錯
'Set wb = Workbooks.Open(str)
End If
'這樣既打開了檔案,還能利用wb後續操作
Dim arr()

Dim wb As Workbook
Dim sht As Worksheet '為想做的操作準備,可刪
Set sht = ThisWorkbook.Sheets(1) '為想做的操作準備,可刪
i = Application.GetOpenFilename("excel檔案,*.xls*", 1, , , True)
j = TypeName(i)'判斷使用者選擇的型別,若是false則typename為boolean,不能傳給陣列
If j <> "Boolean" Then
arr = i '將開啟檔案的名稱傳給陣列
For k = LBound(arr) To UBound(arr)
Set wb = Workbooks.Open(arr(k))
'**做想做的操作,如:sht.Range("a" & k) = wb.Name**
wb.Close
Next
End If

附錄:

msgbox按鈕型別:

msgbox返回值:

application.Inputbox輸入型別:

常見對話方塊的呼叫是真正地呼叫開啟內建對話方塊
Application.Dialogs(xlDialogActivate或103).Show