VBA中使用InputBox方法

2021-12-08 14:27 更新

除了InputBox函數(shù)之外,還有InputBox方法,如果你激活對象瀏覽器,然后搜索“inputbox”,VB將顯示兩個InputBox——一種為Excel庫,另一種為VBA庫(見圖4-12)。InputBox方法在Excel庫里面可用,它的語法和本章前面講的InputBox函數(shù)的語法有輕微差別,它的語法為:


expression.InputBox(Prompt,   [Title],   [Default],    [Left],   [Top],   [HelpFile],

[HelpContextID], [Type] )


所有方括號里面的參數(shù)都是可選的。Prompt(提示)參數(shù)是顯示于對話框上的信息;Title是對話框的標(biāo)題;而Default是對話框上文本框里的初始值。Left和Top參數(shù)是明確對話框在屏幕上的位置。這些參數(shù)的輸入值的單位是Point(1/72英寸)。當(dāng)用戶點擊幫助按鈕時,參數(shù)HelpFile和HelpContextID明確幫助文件名稱以及某個明確的幫助主題。InputBox方法的最后一個參數(shù)——Type(類型)明確返回的數(shù)據(jù)類型。如果你忽略這個參數(shù),InputBox方法將會返回文本格式。類型參數(shù)的值列在表4-3里。


對象瀏覽器

圖4-12 別忘記使用對象瀏覽器來搜索VB函數(shù)和方法


數(shù)據(jù)類型

表4-3 InputBox方法返回的數(shù)據(jù)類型


如果你使用3作為Type參數(shù)的話,用戶將既可以輸入一個數(shù)字也可以輸入一個文本。這個值是將1(數(shù)字)和2(字符串)加和而得到的。InputBox方法很適合那些需要用戶選擇工作表單元格范圍的VBA程序。


1.  關(guān)閉對象瀏覽器,如果你已經(jīng)打開了的話


2.  在模塊Sample8里面,輸入下列過程WhatRange:

Sub WhatRange()
             Dim newRange As Range
             Dim tellMe As String
             tellMe = "Use the mouse to select a range:"
             Set newRange = Application.InputBox(prompt:=tellMe, _
                          Title:="Range to format", _
                          Type:=8)
             newRange.NumberFormat = "0.00"
             newRange.Select
End Sub


過程WhatRange開始于一對象變量的聲明——newRange。試回想一下第三章,對象變量指向數(shù)據(jù)的地址。用戶選擇的單元格被賦值給對象變量newRange。注意變量名稱前面的關(guān)鍵字Set:


Set newRange = Application.InputBox(prompt:=tellMe, _
     Title:="Range to format", _
     Type:=8)


類型參數(shù)(Type:=8)使用戶能夠選擇任何單元格區(qū)域。當(dāng)用戶選中單元格區(qū)域時,下句指令:


newRange.NumberFormat = "0.00"


改變所選單元格的格式。最后一句選擇用戶加亮的區(qū)域。

3.運行過程WhatRange。VB顯示一個對話框,提示用戶在工作表里選擇一個單元格區(qū)域。


4.  使用鼠標(biāo)選擇你要的單元格,當(dāng)鼠標(biāo)在單元格上拖動時,VB就會將選擇的區(qū)域引用到對話框的編輯框里面。


區(qū)域地址

圖4-13 使用Excel的InputBox方法,你可以從用戶處獲得區(qū)域地址


5.你選擇了單元格后,點擊對話框上的確定按鈕,被選擇的區(qū)域就已經(jīng)設(shè)置好格式了。要檢查是否按你的意思設(shè)置了,你可以在該區(qū)域的任意單元格里輸入一個整數(shù),這個數(shù)字應(yīng)該顯示為兩位小數(shù)。


6.  重新運行該過程,并且當(dāng)出現(xiàn)對話框時,點擊取消按鈕。如果你在選擇了一個單元格或者一個區(qū)域后點擊確定按鈕,過程WhatRange將工作正常。不幸地是,當(dāng)你點擊取消按鈕或Esc按鈕,VB將顯示一錯誤信息——“要求對象”。當(dāng)你點擊錯誤對話框上的調(diào)試按鈕,VB就會加亮導(dǎo)致錯誤的代碼行。因為你不希望在取消對話框時選擇任何單元格,所以你必須想個法子忽略VB顯示的這個錯誤。使用一個專門的語句,On Error GoTo 標(biāo)志,你就可以繞過錯誤的發(fā)生。該指令的語法如下:


On Error GoTo 標(biāo)志


這個指令應(yīng)該放在變量聲明行的下面。標(biāo)志可以是除了VB關(guān)鍵字之外的任何你想要的詞語。如果錯誤發(fā)生時,VB就會直接跳到該特別的標(biāo)志,如下面步驟8所示。

7.  選擇“運行”-“重新設(shè)置”以取消正在運行的程序。

8.將過程WhatRange修改為如下所示W(wǎng)hatRange2:
Sub WhatRange2()
     Dim newRange As Range

     Dim tellMe As String

     On Error GoTo VeryEnd

     tellMe = "Use the mouse to select a range:"

     Set newRange = Application.InputBox(prompt:=tellMe, _
          Title:="Range to format", _
          Type:=8)
     newRange.NumberFormat = "0.00"
     newRange.Select
VeryEnd:


9.  運行程序WhatRange2,一旦出現(xiàn)對話框時就點擊取消按鈕。注意,這次程序沒有產(chǎn)生錯誤。當(dāng)VB遭遇錯誤時,就會跳到位于程序結(jié)尾處的標(biāo)志VeryEnd。位于錯誤和標(biāo)志VeryEnd之間的語句被忽略了。


技巧:子程序和函數(shù):你應(yīng)該使用哪個?

創(chuàng)建子程序的時候:
?

①需要執(zhí)行一些動作
②需要獲取用戶信息
③需要在屏幕上顯示信息

創(chuàng)建函數(shù)的時候:


①需要不只一次的做一些簡單的計算
②需要做復(fù)雜的計算
③需要不只一次地調(diào)用相同的指令塊
④需要檢查某些表達正確與否



以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號