示例01-01:體驗(yàn)開/關(guān)屏幕更新(ScreenUpdating屬性)
http://blog.163.com/wangyao_13/blog/static/3825989120076247109212/
Sub 關(guān)閉屏幕更新()
MsgBox "順序切換工作表Sheet1→Sheet2→Sheet3→Sheet2,先開啟屏幕更新,然后關(guān)閉屏幕更新"
Worksheets(1).Select
MsgBox "目前屏幕中顯示工作表Sheet1"
Application.ScreenUpdating = True
Worksheets(2).Select
MsgBox "顯示Sheet2了嗎?"
Worksheets(3).Select
MsgBox "顯示Sheet3了嗎?"
Worksheets(2).Select
MsgBox "下面與前面執(zhí)行的程序代碼相同,但關(guān)閉屏幕更新功能"
Worksheets(1).Select
MsgBox "目前屏幕中顯示工作表Sheet1" & Chr(10) & "關(guān)屏屏幕更新功能"
Application.ScreenUpdating = False
Worksheets(2).Select
MsgBox "顯示Sheet2了嗎?"
Worksheets(3).Select
MsgBox "顯示Sheet3了嗎?"
Worksheets(2).Select
Application.ScreenUpdating = True
End Sub
示例說明:ScreenUpdating屬性用來控制屏幕更新。當(dāng)運(yùn)行一個(gè)宏程序處理涉及到多個(gè)工作表或單元格中的大量數(shù)據(jù)時(shí),若沒有關(guān)閉屏幕更新,則會(huì)占用CPU的處理時(shí)間,從而降低程序的運(yùn)行速度,而關(guān)閉該屬性則可顯著提高程序運(yùn)行速度。
示例01-02:使用狀態(tài)欄(StatusBar屬性)
Sub testStatusBar()
Application.DisplayStatusBar = True
'開啟狀態(tài)欄顯示
'賦值狀態(tài)欄顯示的文本
Application.StatusBar = "
http://fanjy.blog.excelhome.net"
End Sub
示例說明:StatusBar屬性用來指定顯示在狀態(tài)欄上的信息。若不想再顯示狀態(tài)欄文本,可使用
Application.StatusBar = False語句關(guān)閉狀態(tài)欄顯示,也可以在程序開始將原先的狀態(tài)欄設(shè)置存儲(chǔ),如使用語句
oldStatusBar = Application.DisplayStatusBar將狀態(tài)欄原來的信息存儲(chǔ)在變量oldStatusBar,在程序運(yùn)行完成或退出時(shí),將變量重新賦值給狀態(tài)欄,如使用語句
Application.DisplayStatusBar = oldStatusBar,以恢復(fù)狀態(tài)欄原狀。
示例01-03:處理光標(biāo)(Cursor屬性)
Sub ViewCursors()
Application.Cursor = xlNorthwestArrow
MsgBox "您將使用箭頭光標(biāo),切換到Excel界面查看光標(biāo)形狀"
Application.Cursor = xlIBeam
MsgBox "您將使用工形光標(biāo),切換到Excel界面查看光標(biāo)形狀"
Application.Cursor = xlWait
MsgBox "您將使用等待形光標(biāo),切換到Excel界面查看光標(biāo)形狀"
Application.Cursor = xlDefault
MsgBox "您已將光標(biāo)恢復(fù)為缺省狀態(tài)"
End Sub
示例01-04:獲取系統(tǒng)信息
Sub GetSystemInfo()
MsgBox "Excel版本信息為:" & Application.CalculationVersion
MsgBox "Excel當(dāng)前允許使用的內(nèi)存為:" & Application.MemoryFree
MsgBox "Excel當(dāng)前已使用的內(nèi)存為:" & Application.MemoryUsed
MsgBox "Excel可以使用的內(nèi)存為:" & Application.MemoryTotal
MsgBox "本機(jī)操作系統(tǒng)的名稱和版本為:" & Application.OperatingSystem
MsgBox "本產(chǎn)品所登記的組織名為:" & Application.OrganizationName
MsgBox "當(dāng)前用戶名為:" & Application.UserName
MsgBox "當(dāng)前使用的Excel版本為:" & Application.Version
End Sub
示例說明:可以使用給UserName屬性賦值以設(shè)置用戶名稱。
示例01-05:退出復(fù)制/剪切模式(CutCopyMode屬性)
Sub exitCutCopyMode()
Application.CutCopyMode = False
End Sub
示例說明:退出復(fù)制/剪切模式后,在程序運(yùn)行時(shí)所進(jìn)行的復(fù)制或剪切操作不會(huì)在原單元格區(qū)域留下流動(dòng)的虛框線。需要提醒的是,在程序運(yùn)行完后,應(yīng)使用
Application.CutCopyMode = False語句恢復(fù)該屬性的默認(rèn)設(shè)置。
示例01-06:禁止彈出警告信息(DisplayAlerts屬性)
Sub testAlertsDisplay()
Application.DisplayAlerts = False
End Sub
示例說明:在程序運(yùn)行過程中,有時(shí)由于Excel本身設(shè)置的原因,會(huì)彈出對話框,從而中斷程序的運(yùn)行,您可以在程序之前加上
Application.DisplayAlerts = False語句以禁止彈出這些對話框而不影響程序正常運(yùn)行。需要注意的是,在程序運(yùn)行結(jié)束前,應(yīng)使DisplayAlerts屬性恢復(fù)為缺省狀態(tài),即使用語句
Application.DisplayAlerts = True。該屬性的默認(rèn)設(shè)置為True,當(dāng)將該屬性設(shè)置為False時(shí),Excel會(huì)使直接使用對話框中默認(rèn)的選擇,從而不會(huì)因?yàn)閺棾鰧υ捒蚨绊懗绦蜻\(yùn)行。
示例01-07:將Excel全屏幕顯示
Sub testFullScreen()
MsgBox "運(yùn)行后將Excel的顯示模式設(shè)置為全屏幕"
Application.DisplayFullScreen = True
MsgBox "恢復(fù)為原來的狀態(tài)"
Application.DisplayFullScreen = False
End Sub
示例01-08:Excel啟動(dòng)的文件夾路徑
Sub ExcelStartfolder()
MsgBox "Excel啟動(dòng)的文件夾路徑為:" & Chr(10) & Application.StartupPath
End Sub
示例01-09:打開最近使用過的文檔
Sub OpenRecentFiles()
MsgBox "顯示最近使用過的第三個(gè)文件名,并打開該文件"
MsgBox "最近使用的第三個(gè)文件的名稱為:" & Application.RecentFiles(3).Name
Application.RecentFiles(3).Open
End Sub
示例01-10:打開文件(FindFile方法)
Sub FindFileOpen()
On Error Resume Next
MsgBox "請打開文件", vbOKOnly + vbInformation, "打開文件"
If Not Application.FindFile Then
MsgBox "文件未找到", vbOKOnly + vbInformation, "打開失敗"
End If
End Sub
示例說明:本示例將顯示“打開”文件對話框,若用戶未打開文件(即點(diǎn)擊“取消”按鈕),則會(huì)顯示“打開失敗”信息框。示例中使用了FindFile方法,用來顯示“打開”對話框并讓用戶打開一個(gè)文件。如果成功打開一個(gè)新文件,則該值為True。如果用戶取消了操作并退出該對話框,則該值為False。
示例01-11:文件對話框操作(FileDialog屬性)
Sub UseFileDialogOpen()
Dim lngCount As Long
'開啟"打開文件"對話框
With Application.FileDialog(msoFileDialogOpen)
.AllowMultiSelect = True
.Show
'顯示所選的每個(gè)文件的路徑
For lngCount = 1 To .SelectedItems.Count
MsgBox .SelectedItems(lngCount)
Next lngCount
End With
End Sub
示例說明:本示例顯示“打開文件”對話框,當(dāng)用戶在其中選擇一個(gè)或多個(gè)文件后,將依次顯示每個(gè)文件的路徑。其中,F(xiàn)ileDialog屬性返回打開和保存對話框中一系列對象的集合,您可以對該集合對象的屬性進(jìn)行進(jìn)一步的設(shè)置,如上例中的AllowMultiSelect屬性設(shè)置為True將允許用戶選擇多個(gè)文件。
示例01-12:保存Excel的工作環(huán)境
Sub 保存Excel的工作環(huán)境()
MsgBox "將Excel的工作環(huán)境保存到D:\ExcelSample\中"
Application.SaveWorkspace "D:\ExcelSample\Sample"
End Sub
示例說明:運(yùn)行本程序后,將工作簿以帶后綴名.xlw保存到D盤的ExcelSample文件夾中,生成的文件全名為Sample.xlw。當(dāng)改變工作簿并保存時(shí),Excel會(huì)詢問是覆蓋原文件還是保存副本。
示例01-13:改變Excel工作簿名字(Caption屬性)
Sub SetCaption()
Application.Caption = "My ExcelBook"
End Sub
示例說明:運(yùn)行本程序后,將工作簿左上角Excel圖標(biāo)右側(cè)的“Microsoft Excel”改為“My ExcelBook”。
示例01-14:使用InputBox方法
Sub SampleInputBox()
Dim vInput
vInput = InputBox("請輸入用戶名:", "獲取用戶名", Application.UserName)
MsgBox "您好!" & vInput & ".很高興能認(rèn)識您.", vbOKOnly, "打招呼"
End Sub
示例01-15:設(shè)置頁邊距(CentimetersToPoints方法)
Sub SetLeftMargin()
MsgBox "將工作表Sheet1的左頁邊距設(shè)為5厘米"
Worksheets("Sheet1").PageSetup.LeftMargin = Application.CentimetersToPoints(5)
End Sub
示例01-16:使用Windows的計(jì)算器(ActivateMicrosoftApp方法)
Sub CallCalculate()
Application.ActivateMicrosoftApp Index:=0
End Sub
示例說明:運(yùn)行本程序后,將調(diào)用Windows的計(jì)算器。
示例01-17:在程序中運(yùn)行另一個(gè)宏(Run方法)
Sub runOtherMacro()
MsgBox "本程序先選擇A1至C6單元格區(qū)域后執(zhí)行DrawLine宏"
ActiveSheet.Range("A2:C6").Select
Application.Run "DrawLine"
End Sub
示例01-18:在指定的時(shí)間執(zhí)行宏(OnTime方法)
Sub AfterTimetoRun()
MsgBox "從現(xiàn)在開始,10秒后執(zhí)行程序「testFullScreen」"
Application.OnTime Now + TimeValue("00:00:10"), "testFullScreen"
End Sub
示例說明:運(yùn)行本程序后,在10秒后將執(zhí)行程序testFullScreen。
示例01-19:暫時(shí)停止宏運(yùn)行(Wait方法)
Sub Stop5sMacroRun()
Dim SetTime As Date
MsgBox "按下「確定」,5秒后執(zhí)行程序「testFullScreen」"
SetTime = DateAdd("s", 5, Now())
Application.Wait SetTime
Call testFullScreen
End Sub
示例說明:運(yùn)行本程序后,按下彈出的提示框中的“確定”按鈕,等待5秒后執(zhí)行另一程序testFullScreen。
示例01-20:按下指定的按鍵后執(zhí)行程序(OnKey方法)
[示例01-20-1]
Sub PressKeytoRun()
MsgBox "按下Ctrl+D后將執(zhí)行程序「testFullScreen」"
Application.OnKey "^c9ozetgccsir", "testFullScreen"
End Sub
[示例01-20-2]
Sub ResetKey()
MsgBox "恢復(fù)原來的按鍵狀態(tài)"
Application.OnKey "^c9ozetgccsir"
End Sub
示例說明:Onkey方法的作用主要是指定特定的鍵,當(dāng)按下指定的鍵時(shí)運(yùn)行相應(yīng)的宏程序,或者按下指定的鍵時(shí),使Excel屏蔽特定的功能。
示例01-21:重新計(jì)算工作簿
[示例01-21-1]
Sub CalculateAllWorkbook()
Application.Calculate
End Sub
示例說明:當(dāng)工作簿的計(jì)算模式被設(shè)置為手動(dòng)模式后,運(yùn)用Calculate方法可以重新計(jì)算所有打開的工作簿、工作簿中特定的工作表或者工作表中指定的單元格區(qū)域。
[示例01-21-2]
Sub CalculateFullSample()
If Application.CalculationVersion <> Workbooks(1).CalculationVersion Then
Application.CalculateFull
End If
End Sub
示例說明:本示例先將當(dāng)前Microsoft Excel的版本與上次計(jì)算該工作簿的Excel版本進(jìn)行比較,如果兩個(gè)版本不同,則對所有打開工作簿中的數(shù)據(jù)進(jìn)行一次完整計(jì)算。其中,CalculationVersion屬性返回工作簿的版本信息。
示例01-22:控制函數(shù)重新計(jì)算(Volatile方法)
Function NonStaticRand()
'當(dāng)工作表中任意單元格重新計(jì)算時(shí)本函數(shù)更新
Application.Volatile True
NonStaticRand = Rnd()
End Function
示例說明:本示例摸仿Excel中的Rand()函數(shù),當(dāng)工作表單元格發(fā)生變化時(shí),都會(huì)重新計(jì)算該函數(shù)。在例子中,使用了Volatile方法,強(qiáng)制函數(shù)進(jìn)行重新計(jì)算,即無論何時(shí)重新計(jì)算工作表,該函數(shù)都會(huì)重新計(jì)算。
示例01-23:利用工作表函數(shù)(WorksheetFunction屬性)
Sub WorksheetFunctionSample()
Dim myRange As Range, answer
Set myRange = Worksheets("Sheet1").Range("A1:C10")
answer = Application.WorksheetFunction.Min(myRange)
Dim rSect As Range
Worksheets("Sheet1").Activate
Set rSect = Application.Intersect(Range("rg1"), Range("rg2"))
If rSect Is Nothing Then
MsgBox "沒有交叉區(qū)域"
Else
rSect.Select
End If
End Sub
示例說明:本示例在工作表Sheet1中選定兩個(gè)命名區(qū)域rg1和rg2的重疊區(qū)域,如果所選區(qū)域不重疊,則顯示一條相應(yīng)的信息。其中,Intersect方法返回一個(gè)Range對象,代表兩個(gè)或多個(gè)范圍重疊的矩形區(qū)域。
示例01-25:獲取路徑分隔符(PathSeparator屬性)
Sub GetPathSeparator()
MsgBox "路徑分隔符為" & Application.PathSeparator
End Sub
示例說明:本示例使用PathSeparator屬性返回路徑分隔符(“\”)。
示例01-26:快速移至指定位置(Goto方法)
Sub GotoSample()
Application.Goto Reference:=Worksheets("Sheet1").Range("A154"), _
scroll:=True
End Sub
示例說明:本示例運(yùn)行后,將當(dāng)前單元格移至工作表Sheet1中的單元格A154。
示例01-27:顯示內(nèi)置對話框(Dialogs屬性)
Sub DialogSample()
Application.Dialogs(xlDialogOpen).Show
End Sub
示例說明:本示例顯示Excel的“打開”文件對話框。其中,Dialogs屬性返回的集合代表所有的Excel內(nèi)置對話框。
示例01-28:退出Excel(SendKeys方法)
Sub SendKeysSample()
Application.SendKeys ("%fx")
End Sub
示例說明:本示例使用SendKeys方法退出Excel,若未保存,則會(huì)彈出提示對話框并讓用戶作出相應(yīng)的選擇。SendKeys方法的作用是摸擬鍵盤輸入,如例中的“%fx”表示在Excel中同時(shí)按下Alt、F和X三個(gè)鍵。
示例01-29:關(guān)閉Excel
Sub 關(guān)閉Excel()
MsgBox "Excel將會(huì)關(guān)閉"
Application.Quit
End Sub
示例說明:運(yùn)行本程序后,若該工作簿未保存,則會(huì)彈出對話框詢問是否保存。
=============================