APPLICATION對象應用

Application對象代表整個Microsoft Excel應用程序,帶有175個屬性和52個方法,可以設置整個應用程序的環境或配置應用程序。

--------------------------------------------------------------------------------
示例01-01:體驗開/關屏幕更新(ScreenUpdating屬性)
Sub 關閉屏幕更新()
  MsgBox "順序切換工作表Sheet1→Sheet2→Sheet3→Sheet2,先開啓屏幕更新,然後關閉屏幕更新"
  Worksheets(1).Select
  MsgBox "目前屏幕中顯示工作表Sheet1"
  Application.ScreenUpdating = True
  Worksheets(2).Select
  MsgBox "顯示Sheet2了嗎?"
  Worksheets(3).Select
  MsgBox "顯示Sheet3了嗎?"
  Worksheets(2).Select
  MsgBox "下面與前面執行的程序代碼相同,但關閉屏幕更新功能"
  Worksheets(1).Select
  MsgBox "目前屏幕中顯示工作表Sheet1" & Chr(10) & "關屏屏幕更新功能"
  Application.ScreenUpdating = False
  Worksheets(2).Select
  MsgBox "顯示Sheet2了嗎?"
  Worksheets(3).Select
  MsgBox "顯示Sheet3了嗎?"
  Worksheets(2).Select
  Application.ScreenUpdating = True
End Sub
示例說明:ScreenUpdating屬性用來控制屏幕更新。當運行一個宏程序處理涉及到多個工作表或單元格中的大量數據時,若沒有關閉屏幕更新,則會佔用CPU的處理時間,從而降低程序的運行速度,而關閉該屬性則可顯著提高程序運行速度。

--------------------------------------------------------------------------------
示例01-02:使用狀態欄(StatusBar屬性)
Sub testStatusBar()
  Application.DisplayStatusBar = True '開啓狀態欄顯示
  '賦值狀態欄顯示的文本
  Application.StatusBar = "http://fanjy.blog.excelhome.net"
End Sub
示例說明:StatusBar屬性用來指定顯示在狀態欄上的信息。若不想再顯示狀態欄文本,可使用Application.StatusBar = False語句關閉狀態欄顯示,也可以在程序開始將原先的狀態欄設置存儲,如使用語句oldStatusBar = Application.DisplayStatusBar將狀態欄原來的信息存儲在變量oldStatusBar,在程序運行完成或退出時,將變量重新賦值給狀態欄,如使用語句Application.DisplayStatusBar = oldStatusBar,以恢復狀態欄原狀。

--------------------------------------------------------------------------------
示例01-03:處理光標(Cursor屬性)
Sub ViewCursors()
  Application.Cursor = xlNorthwestArrow
  MsgBox "您將使用箭頭光標,切換到Excel界面查看光標形狀"
  Application.Cursor = xlIBeam
  MsgBox "您將使用工形光標,切換到Excel界面查看光標形狀"
  Application.Cursor = xlWait
  MsgBox "您將使用等待形光標,切換到Excel界面查看光標形狀"
  Application.Cursor = xlDefault
  MsgBox "您已將光標恢復爲缺省狀態"
End Sub

--------------------------------------------------------------------------------
示例01-04:獲取系統信息
Sub GetSystemInfo()
  MsgBox "Excel版本信息爲:" & Application.CalculationVersion
  MsgBox "Excel當前允許使用的內存爲:" & Application.MemoryFree
  MsgBox "Excel當前已使用的內存爲:" & Application.MemoryUsed
  MsgBox "Excel可以使用的內存爲:" & Application.MemoryTotal
  MsgBox "本機操作系統的名稱和版本爲:" & Application.OperatingSystem
  MsgBox "本產品所登記的組織名爲:" & Application.OrganizationName
  MsgBox "當前用戶名爲:" & Application.UserName
  MsgBox "當前使用的Excel版本爲:" & Application.Version
End Sub
示例說明:可以使用給UserName屬性賦值以設置用戶名稱。

--------------------------------------------------------------------------------
示例01-05:退出複製/剪切模式(CutCopyMode屬性)
Sub exitCutCopyMode()
  Application.CutCopyMode = False
End Sub
示例說明:退出複製/剪切模式後,在程序運行時所進行的複製或剪切操作不會在原單元格區域留下流動的虛框線。需要提醒的是,在程序運行完後,應使用Application.CutCopyMode = False語句恢復該屬性的默認設置。

--------------------------------------------------------------------------------
示例01-06:禁止彈出警告信息(DisplayAlerts屬性)
Sub testAlertsDisplay()
  Application.DisplayAlerts = False
End Sub
示例說明:在程序運行過程中,有時由於Excel本身設置的原因,會彈出對話框,從而中斷程序的運行,您可以在程序之前加上Application.DisplayAlerts = False語句以禁止彈出這些對話框而不影響程序正常運行。需要注意的是,在程序運行結束前,應使DisplayAlerts屬性恢復爲缺省狀態,即使用語句Application.DisplayAlerts = True。該屬性的默認設置爲True,當將該屬性設置爲False時,Excel會使直接使用對話框中默認的選擇,從而不會因爲彈出對話框而影響程序運行。

--------------------------------------------------------------------------------
示例01-07:將Excel全屏幕顯示
Sub testFullScreen()
  MsgBox "運行後將Excel的顯示模式設置爲全屏幕"
  Application.DisplayFullScreen = True
  MsgBox "恢復爲原來的狀態"
  Application.DisplayFullScreen = False
End Sub
示例01-08:Excel啓動的文件夾路徑
Sub ExcelStartfolder()
  MsgBox "Excel啓動的文件夾路徑爲:" & Chr(10) & Application.StartupPath
End Sub

--------------------------------------------------------------------------------
示例01-09:打開最近使用過的文檔
Sub OpenRecentFiles()
  MsgBox "顯示最近使用過的第三個文件名,並打開該文件"
  MsgBox "最近使用的第三個文件的名稱爲:" & 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
示例說明:本示例將顯示“打開”文件對話框,若用戶未打開文件(即點擊“取消”按鈕),則會顯示“打開失敗”信息框。示例中使用了FindFile方法,用來顯示“打開”對話框並讓用戶打開一個文件。如果成功打開一個新文件,則該值爲True。如果用戶取消了操作並退出該對話框,則該值爲False。

--------------------------------------------------------------------------------
示例01-11:文件對話框操作(FileDialog屬性)
Sub UseFileDialogOpen()
  Dim lngCount As Long
  '開啓"打開文件"對話框
  With Application.FileDialog(msoFileDialogOpen)
    .AllowMultiSelect = True
    .Show
    '顯示所選的每個文件的路徑
    For lngCount = 1 To .SelectedItems.Count
      MsgBox .SelectedItems(lngCount)
    Next lngCount
  End With
End Sub
示例說明:本示例顯示“打開文件”對話框,當用戶在其中選擇一個或多個文件後,將依次顯示每個文件的路徑。其中,FileDialog屬性返回打開和保存對話框中一系列對象的集合,您可以對該集合對象的屬性進行進一步的設置,如上例中的AllowMultiSelect屬性設置爲True將允許用戶選擇多個文件。

--------------------------------------------------------------------------------
示例01-12:保存Excel的工作環境
Sub 保存Excel的工作環境()
  MsgBox "將Excel的工作環境保存到D:/ExcelSample/中"
  Application.SaveWorkspace "D:/ExcelSample/Sample"
End Sub
示例說明:運行本程序後,將工作簿以帶後綴名.xlw保存到D盤的ExcelSample文件夾中,生成的文件全名爲Sample.xlw。當改變工作簿並保存時,Excel會詢問是覆蓋原文件還是保存副本。

--------------------------------------------------------------------------------
示例01-13:改變Excel工作簿名字(Caption屬性)
Sub SetCaption()
  Application.Caption = "My ExcelBook"
End Sub
示例說明:運行本程序後,將工作簿左上角Excel圖標右側的“Microsoft Excel”改爲“My ExcelBook”。

--------------------------------------------------------------------------------
示例01-14:使用InputBox方法
Sub SampleInputBox()
  Dim vInput
  vInput = InputBox("請輸入用戶名:", "獲取用戶名", Application.UserName)
  MsgBox "您好!" & vInput & ".很高興能認識您.", vbOKOnly, "打招呼"
End Sub

--------------------------------------------------------------------------------
示例01-15:設置頁邊距(CentimetersToPoints方法)
Sub SetLeftMargin()
  MsgBox "將工作表Sheet1的左頁邊距設爲5釐米"
  Worksheets("Sheet1").PageSetup.LeftMargin = Application.CentimetersToPoints(5)
End Sub

--------------------------------------------------------------------------------
示例01-16:使用Windows的計算器(ActivateMicrosoftApp方法)
Sub CallCalculate()
  Application.ActivateMicrosoftApp Index:=0
End Sub
示例說明:運行本程序後,將調用Windows的計算器。

--------------------------------------------------------------------------------
示例01-17:在程序中運行另一個宏(Run方法)
Sub runOtherMacro()
  MsgBox "本程序先選擇A1至C6單元格區域後執行DrawLine宏"
  ActiveSheet.Range("A2:C6").Select
  Application.Run "DrawLine"
End Sub

--------------------------------------------------------------------------------
示例01-18:在指定的時間執行宏(OnTime方法)
Sub AfterTimetoRun()
  MsgBox "從現在開始,10秒後執行程序「testFullScreen」"
  Application.OnTime Now + TimeValue("00:00:10"), "testFullScreen"
End Sub
示例說明:運行本程序後,在10秒後將執行程序testFullScreen。

--------------------------------------------------------------------------------
示例01-19:暫時停止宏運行(Wait方法)
Sub Stop5sMacroRun()
  Dim SetTime As Date
  MsgBox "按下「確定」,5秒後執行程序「testFullScreen」"
  SetTime = DateAdd("s", 5, Now())
  Application.Wait SetTime
  Call testFullScreen
End Sub
示例說明:運行本程序後,按下彈出的提示框中的“確定”按鈕,等待5秒後執行另一程序testFullScreen。

--------------------------------------------------------------------------------
示例01-20:按下指定的按鍵後執行程序(OnKey方法)
[示例01-20-1]
Sub PressKeytoRun()
  MsgBox "按下Ctrl+D後將執行程序「testFullScreen」"
  Application.OnKey "^{d}", "testFullScreen"
End Sub
[示例01-20-2]
Sub ResetKey()
  MsgBox "恢復原來的按鍵狀態"
  Application.OnKey "^{d}"
End Sub
示例說明:Onkey方法的作用主要是指定特定的鍵,當按下指定的鍵時運行相應的宏程序,或者按下指定的鍵時,使Excel屏蔽特定的功能。

--------------------------------------------------------------------------------
示例01-21:重新計算工作簿
[示例01-21-1]
Sub CalculateAllWorkbook()
  Application.Calculate
End Sub
示例說明:當工作簿的計算模式被設置爲手動模式後,運用Calculate方法可以重新計算所有打開的工作簿、工作簿中特定的工作表或者工作表中指定的單元格區域。
[示例01-21-2]
Sub CalculateFullSample()
  If Application.CalculationVersion <> Workbooks(1).CalculationVersion Then
    Application.CalculateFull
  End If
End Sub
示例說明:本示例先將當前Microsoft Excel的版本與上次計算該工作簿的Excel版本進行比較,如果兩個版本不同,則對所有打開工作簿中的數據進行一次完整計算。其中,CalculationVersion屬性返回工作簿的版本信息。

--------------------------------------------------------------------------------
示例01-22:控制函數重新計算(Volatile方法)
Function NonStaticRand()
  '當工作表中任意單元格重新計算時本函數更新
  Application.Volatile True
  NonStaticRand = Rnd()
End Function
示例說明:本示例摸仿Excel中的Rand()函數,當工作表單元格發生變化時,都會重新計算該函數。在例子中,使用了Volatile方法,強制函數進行重新計算,即無論何時重新計算工作表,該函數都會重新計算。

--------------------------------------------------------------------------------
示例01-23:利用工作表函數(WorksheetFunction屬性)
Sub WorksheetFunctionSample()
  Dim myRange As Range, answer
  Set myRange = Worksheets("Sheet1").Range("A1:C10")
  answer = Application.WorksheetFunction.Min(myRange)
  MsgBox answer
End Sub
示例說明:本示例獲取工作表Sheet1中單元格區域A1:C10中的最小值,使用了工作表函數Min()。一般,使用WorksheetFunction屬性引用工作表函數,但如果VBA自帶有實現相同功能的函數,則直接使用該函數,否則會出現錯誤。

--------------------------------------------------------------------------------
示例01-24:獲取重疊區域(Intersect方法)
Sub IntersectRange()
  Dim rSect As Range
  Worksheets("Sheet1").Activate
  Set rSect = Application.Intersect(Range("rg1"), Range("rg2"))
  If rSect Is Nothing Then
    MsgBox "沒有交叉區域"
  Else
    rSect.Select
  End If
End Sub
示例說明:本示例在工作表Sheet1中選定兩個命名區域rg1和rg2的重疊區域,如果所選區域不重疊,則顯示一條相應的信息。其中,Intersect方法返回一個Range對象,代表兩個或多個範圍重疊的矩形區域。

--------------------------------------------------------------------------------
示例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
示例說明:本示例運行後,將當前單元格移至工作表Sheet1中的單元格A154。

--------------------------------------------------------------------------------
示例01-27:顯示內置對話框(Dialogs屬性)
Sub DialogSample()
  Application.Dialogs(xlDialogOpen).Show
End Sub
示例說明:本示例顯示Excel的“打開”文件對話框。其中,Dialogs屬性返回的集合代表所有的Excel內置對話框。

--------------------------------------------------------------------------------
示例01-28:退出Excel(SendKeys方法)
Sub SendKeysSample()
  Application.SendKeys ("%fx")
End Sub
示例說明:本示例使用SendKeys方法退出Excel,若未保存,則會彈出提示對話框並讓用戶作出相應的選擇。SendKeys方法的作用是摸擬鍵盤輸入,如例中的“%fx”表示在Excel中同時按下Alt、F和X三個鍵。

--------------------------------------------------------------------------------
示例01-29:關閉Excel
Sub 關閉Excel()
  MsgBox "Excel將會關閉"
  Application.Quit
End Sub
示例說明:運行本程序後,若該工作簿未保存,則會彈出對話框詢問是否保存。

=============================

 

發佈了34 篇原創文章 · 獲贊 4 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章