今日的內容是「VBA之EXCEL應用」的第二章「MsgBox與InputBox對話框的應用」中第二節「MsgBox函數的講解及應用」。「VBA之EXCEL應用」這套教程從簡單的錄製宏的講解,一直到窗體的搭建,內容豐富,案例眾多。大家可以非常容易的掌握相關的知識,這套教程面向初學人員,共三冊,十七章,都是我們在利用EXCEL工作過程中需要掌握的知識點,希望大家能掌握利用。
第二節MsgBox函數的講解及應用
大家好,我們今天講解的內容是MsgBox函數。在上一講,我們講解了MsgBox對話框的簡單應用,今日講解的是MsgBox函數,兩者有什麼不同呢?所謂函數,指的是一個Function過程,區別於簡單的過程,Function過程是有返回值的。
Excel VBA中的MsgBox函數可以返回結果,而簡單的MsgBox語句不能返回結果。
1 MsgBox函數
在對話框中顯示消息,等待用戶單擊按鈕,並返回一個整數,指示用戶單擊的那個按鈕.
1)語法:
MsgBox (prompt, [ buttons, ] [ title, ] [ helpfile, context ])
參數:
prompt 必需項。 字符串表達式在對話框中顯示為消息。 prompt 的最大長度約為 1024 個字符,具體取決於所使用的字符的寬度。如果 prompt 包含兩行以上,則可以在每行之間使用回車符 (Chr(13))、換行符 (Chr(10)) 或回車換行符組合 (Chr(13) & Chr(10)) 將其分隔。
buttons 可選。 數值表達式,用於指定要顯示按鈕的數量和類型、要使用的圖標樣式、默認按鈕的標識和消息框的形式的值之和。 如果省略,則 buttons 的默認值為 0。
title可選。 對話框標題欄中顯示的字符串表達式。 如果省略 title,則標題欄中將顯示應用程式名稱。
helpfile 可選。 用於標識幫助文件的字符串表達式,前者用於為對話框提供上下文相關的幫助。 如果提供 helpfile,則也必須提供 context。
context 可選。 幫助上下文數值的數值表達式,該數值由幫助作者為相應的幫助主題分配。 如果提供 context,則也必須提供 helpfile。
2)buttons 參數設置如下:
常量 值 說明
vbOKOnly 0 僅顯示「確定」按鈕。
vbOKCancel 1 顯示「確定」和「取消」按鈕。
vbAbortRetryIgnore 2 顯示「中止」、「重試」和「忽略」按鈕。
vbYesNoCancel 3 顯示「是」、「否」和「取消」按鈕。
vbYesNo 4 顯示「是」和「否」按鈕。
vbRetryCancel 5 顯示「重試」和「取消」按鈕。
vbCritical 16 顯示「關鍵消息」圖標。
vbQuestion 32 顯示「警告查詢」圖標。
vbExclamation 48 顯示「警告消息」圖標。
vbInformation 64 顯示「信息消息」圖標。
vbDefaultButton1 0 第一個按鈕是默認按鈕。
vbDefaultButton2 256 第二個按鈕是默認按鈕。
vbDefaultButton3 512 第三個按鈕是默認按鈕。
vbDefaultButton4 768 第四個按鈕是默認按鈕。
vbApplicationModal 0 應用程式模式;用戶在繼續在當前應用程式中工 作前必須響應消息框。
vbSystemModal 4096 系統模式;在用戶響應消息框前,所有應用程式都掛起。
vbMsgBoxHelpButton 16384 在消息框中添加「幫助」按鈕。
vbMsgBoxSetForeground 65536 將消息框窗口指定為前景窗口。
vbMsgBoxRight 524288 文本右對齊。
vbMsgBoxRtlReading 1048576 指定文本在希伯來語和阿拉伯語系統中應從右到左顯示。
3)第一組值 (0-5) 表示對話框中顯示的按鈕的數量和類型;第二組值(16、32、48、64)表示圖標樣式;第三組值(0、256、512)用於確定默認按鈕;第四組值(0、4096)用於確定消息框的形式。添加數字以創建最終 buttons 參數值時,只是用每個組中的其中一個數值。
4)關於返回值
常量 值 說明
vbOK 1 確定
vbCancel 2 Cancel
vbAbort 3 中止
vbRetry 4 重試
vbIgnore 5 忽略
vbYes 6 是
vbNo 7 否
l如果對話框中顯示「取消」按鈕,按 ESC 鍵與單擊「取消」具有相同的作用。 如果對話框中包含「幫助」按鈕,則會為對話框提供上下文相關幫助。但是,在單擊其他按鈕中的某個按鈕之前不會返回任何值。
2 MsgBox函數的應用
為了清空某個工作表,我們可以寫一段代碼達到我們的目的。但是在運行之前要提供給用戶思考的時間,清空後是否有其他的麻煩。我們來看下面的代碼:
Sub mynzC()
answer = MsgBox("你是否要清空工作表?", vbYesNo + vbQuestion, "清空工作表")
If answer = vbYes Then
Cells.ClearContents
Else
'do nothing
End If
End Sub
代碼截圖:
代碼解讀:
1) answer = MsgBox("你是否要清空工作表?", vbYesNo + vbQuestion, "清空工作表")
使用括號時,MsgBox函數有三個參數。第一部分用於消息框中的消息。使用第二部分指定要在消息框中顯示的按鈕和圖標。第三部分顯示在消息框的標題欄中。
l注意:將光標放在Visual Basic編輯器中的vbYesNo上,然後單擊F1查看可以使用的其他按鈕和圖標。也可以使用相應的值4和32,而不是常量vbYesNo和vbQuestion。
2) If answer = vbYes Then
Cells.ClearContents
Else
'do nothing
End If
如果用戶單擊「是」按鈕,Excel VBA將清空工作表。如果用戶單擊No按鈕,則不會發生任何事情。
3 代碼的運行情況
我們先在工作表中建立一個運行按鈕,並關聯上上述的「mynzC」過程,並在工作表中隨便錄入些數值、符號,之後在點擊後會清除。如下圖:
我們點擊運行,會彈出下面的窗口:
我們選擇「是」。
這個時候的工作表就被清空了。
今日內容回向:
1) MsgBox函數的語法了解嗎?
2) MsgBox函數在應用時分幾部分?
3) 清空工作表是那句代碼?
本講內容參考程序文件:工作簿02.xlsm
分享成果,隨喜正能量
VBA的應用範圍及學習方法:
VBA是利用Office實現個人小型辦公自動化的有效手段(工具)。這是我對VBA的應用界定。在取代OFFICE新的辦公軟體沒有到來之前,誰能在數據處理方面做到極致,誰就是王者。其中登峰至極的技能非VBA莫屬!
我記得20年前自己初學VBA時,那時的資料甚少,只能看源碼自己琢磨,真的很難。20年過去了,為了不讓學習VBA的朋友重複我之前的經歷,我根據自己多年VBA實際利用經驗,推出了七部VBA專門教程。
第一套:VBA代碼解決方案 是VBA中各個知識點的講解,教程共147講,覆蓋絕大多數的VBA知識點,提供的程序文件更是一座不可多得的代碼寶庫,是初學及中級人員必備教程;目前這套教程提供的版本是修訂第二版,程序文件通過32位和64位兩種OFFICE系統測試。
第二套:VBA資料庫解決方案 資料庫是數據處理的專業利器,教程中詳細介紹了利用ADO連接ACCDB和EXCEL的方法和實例操作,適合中級人員的學習。目前這套教程提供的是修訂第一版教程,程序文件通過32位和64位兩種OFFICE系統測試。
第三套:VBA數組與字典解決方案 數組和字典是VBA的精華,字典是VBA代碼水平提高的有效手段,值得深入的學習,是初級及中級人員代碼精進的手段。目前這套教程提供的版本是修訂第一版,程序文件通過32位和64位兩種OFFICE系統測試。
第四套:VBA代碼解決方案之視頻 是專門面向初學者的視頻講解,可以快速入門,更快的掌握這門技能。這套教程是第一套教程(修訂一版)的視頻講解,視頻更易接受。
第五套:VBA中類的解讀和利用這是一部高級教程,講解類的虛無與肉身的度化,類的利用雖然較少,但仔細的學習可以促進自己VBA理論的提高。這套教程的領會主要是讀者的領悟了,領悟一種佛學的哲理。目前這套教程提供的版本是修訂第一版,程序文件通過32位和64位兩種OFFICE系統測試。
第六套教程:VBA信息獲取與處理,這是一部高級教程,涉及範圍更廣,實用性更強,面向中高級人員。教程共二十個專題,包括:跨應用程式信息獲得、隨機信息的利用、電子郵件的發送、VBA網際網路數據抓取、VBA延時操作,剪切板應用、Split函數擴展、工作表信息與其他應用交互,FSO對象的利用、工作表及文件夾信息的獲取、圖形信息的獲取以及定製工作表信息函數等等內容。程序文件通過32位和64位兩種OFFICE系統測試。
第七套教程:VBA之EXCEL應用 這是一部初級教程這部教程共三冊,從從創建宏、對話框、工作簿和工作表對象、單元格對象等基礎內容講起,到循環結構、錯誤處理、字符串操作、日期和時間、事件、數組應用,函數過程等方面,一直講解到控制項和窗體對象的應用都是我們提高自己EXCEL水平的必須。
以上各教程學習順序:7 1 3 2 6 5或者7 4 3 2 6 5。其中第四套是對第一套的視頻講解,所以第一和第四隻選其一即可。可以W^e^C^h^a^t:VBA6337(或者NZ9668),兩個對象是都是可以的。
_______________________________
有啟發 點在看 朋友分享
約作者 請留言 直接交流