VBA小技巧彙整,好用小技巧都在這裡了

 

在進入本篇文章之前,可以回想一下,在撰寫的過程中,是不是偶爾還是會卡卡,不管是程式執行的問題,還是想要使用VBA操作其他檔案,又或者執行其他程式呢?

在本篇的文章內容內,會盡量把一些個人覺得蠻好用的小技巧,彙整在本篇文章內。當然如果有新的內容,也會再更新追加。

希望看完本篇文章,能夠讓您有滿滿的收穫,又或者在某些小技巧,能夠解決您可能遇到的問題。

在往下看之前,可以先看看目錄,有沒有您想要了解的功能吧。
那麼事不宜遲,我們就開始吧。


目錄

{tocify} $title={目錄} 


技巧1 : 取得程式執行所需時間

在撰寫程式的時候,有時候我們不會只撰寫一個,可能會有好幾個程式一起執行。但是在執行的過程中,如果覺得程式執行得太久,也許我們會想要個別挑出想要測試的程式,並加以確認所執行的時間,並且優化。

當您有需要取得程式執行所需的時間時,可以使用這個小技巧喔。


Point!

步驟1.  定義所需的變數

步驟2.  取得開始的時間

步驟3.  要測試的主要處理程序

步驟4.  取得結束時間

步驟5. 顯示處理程式所需的時間

注意: 想要取得的處理程序一定要夾在步驟2和步驟4的中間。


程式碼

Sub MeasrureTime()
  
      '定義所需的變數
      Dim startTime As Double
      Dim endTime As Double
      Dim processTime As Double
      Dim i As Long
      
      '取得開始的時間
      startTime = Timer
  
      '主要處理程序
      For i = 1 To 100000
      Next i
      
      '取得結束時間
      endTime = Timer
   
      '顯示處理程式所需的時間
      processTime = endTime - startTime
      MsgBox "處理所需時間" & processTime
      
  End Sub
      


關於技巧1:取得程式執行所需時間可參考以下連結影片




技巧2 : 在設定的倒數時間後執行程式

在撰寫程式的時候,有時候也許會希望撰寫一個小程式,提醒我們從現在開始經過幾小時,幾分,甚至是幾秒後,可以執行一個程式提醒我們,當作是個小鬧鐘。又或者在執行取得網頁的資料時,我們希望在倒數的時間後,自動執行某個程式或某些程式,這時候不妨試試以下的小技巧。


Point!

步驟1.  使用Application.OnTime 方法

步驟2.  如果是倒數要使用  Now + TimeValue("小時:分鐘:秒數")

步驟3.  最後再加上 ,  逗點後方加上要執行的程式



程式碼

Sub 指定提醒時間()
    
    '使用Application.OnTime  方法
    
    ' 10秒後執行
    Application.OnTime Now + TimeValue("00:00:10"), "通知"

End Sub


Sub 通知()

     MsgBox "提醒通知"

End Sub
      


關於技巧2:在設定的倒數時間後執行程式可參考以下連結影片



技巧3 : 在設定的指定時間執行程式

在撰寫程式的時候,有時候也許會希望撰寫一個小程式,希望這個程式會在指定時間執行我們想要執行的程式。

例如在指定的時間打開購物網站搶優惠,又或者在指定的時間去抓取需要的資料。

如果您有這樣的需求,這時候不妨試試以下的小技巧。



Point!

步驟1.  使用Application.OnTime 方法

步驟2.  使用  TimeValue("小時:分鐘:秒數")

步驟3.  最後再加上 ,  逗點後方加上要執行的程式



程式碼

Sub 指定時間執行()
    
    '使用Application.OnTime  方法
    
    ' 指定時間執行
    Application.OnTime TimeValue("15:00:00"), "下班通知"

End Sub


Sub 下班通知()

     MsgBox "現在時間是: " & Now & "下班囉!!"

End Sub


關於技巧3:在設定的指定時間執行程式可參考以下連結影片


技巧4 : 開啟chrome及指定網址

技巧4的內容,可參閱本站的文章 開啟Chrome或Edge前往指定網址  所撰寫的內容。


關於技巧4 : 開啟chrome及指定網址可參考以下連結影片



技巧5 : 防止畫面閃爍ScreenUpdating設定

在執行程式的時候,因為程式碼是逐行處理,如果遇到儲存格的移動或公式重新計算...等,會導致Excel重新更新畫面時,這時候畫面會不斷地閃爍,並且由於畫面不斷在重新更新,也會拖累程式的執行速度。

如果想要暫時關閉畫面更新,可使用這個小技巧。 

防止畫面閃爍ScreenUpdating設定,在執行繁重的程式時,可以避免畫面不停閃爍喔


Point!

1.  關閉畫面更新 ScreenUpdating OFF

     Application.ScreenUpdating = False

2.  關閉畫面更新 ScreenUpdating ON

     Application.ScreenUpdating = True

3.  透過True , False 來設定畫面是否更新



程式碼

Sub ScreenUpdatingTest()

       ' 宣告變數
       Dim num As Long
       Dim i As Long, j As Long
       
       '關閉畫面更新 ScreenUpdating OFF
       Application.ScreenUpdating = False
       
       '主程式
       For i = 1 To 100
            For j = 1 To 100
                Cells(i, j).Value = Cells(i, j).Address
            Next j
       Next i

     '關閉畫面更新 ScreenUpdating ON
     Application.ScreenUpdating = True

End Sub


關於技巧5:可參考以下連結影片



技巧6 : 開啟edge及指定網址

技巧6的內容,可參閱本站的文章 開啟Chrome或Edge前往指定網址  所撰寫的內容。


關於技巧6  : 開啟edge及指定網址可參考以下連結影片




技巧7 : 執行批次檔 execute batch file

使用VBA執行一些批次檔,也是我經常使用的功能,關於批次檔的內容,以後會在其他的文章內說明,在這裡只說明如何使用VBA去執行VBA的檔案。

首先要執行之前,當然要有一個.bat的檔案。


Point!

1.  使用 CreateObject函數,參數為 WScript.shell

2.  取得想要執行批次檔的檔案路徑

3.  使用Run 方法執行 Run參數為路徑

4.  最後釋放參照的物件



程式碼

Sub BatchFileTest()
    ' 宣告變數
    Dim Batch As Variant
    Dim batchPath As String
    
    '  使用 CreateObject函數
    Set Batch = CreateObject("WScript.shell")
    
    ' 取得批次檔路徑位置
    batchPath = ActiveWorkbook.Path & "\" & "StartWeb.bat"
                            
    ' 使用Run 方法
   Batch.Run (batchPath)

    '釋放物件變數
    Set Batch = Nothing

End Sub


'startWeb.bat 檔案內的程式碼
start http://tw.yahoo.com


關於技巧7 : 執行批次檔可參考以下連結影片



技巧8 : 建立使用者定義函數

在Excel 可以透過VBA 建立使用者自己定義的函數,如果想要在Excel內建立另外的函數,可以透過這個技巧。

這個技巧算是相當實用,可以在VBA裡面寫計算後,得出自己想要的結果。如果您也需要這個功能,不妨也試看看吧。



Point!

Function 函數名(參數 As 資料型態) As 返回值資料型態

      函數名 = 返回值

End Function



程式碼

' 建立使用者定義函數

' 基本格式
' Function 函數名(參數 As 資料型態) As 返回值資料型態
'     程式處理
'     函數名 = 返回值
' End Function

' 定義參數數字乘以5倍的函數~
Function FiveTime(num%) As Integer
  FiveTime = num * 5
End Function


關於技巧8 : 建立使用者定義函數可參考以下連結影片




技巧9 :  使用TypeName函數取得變數資料型態

在撰寫程式的過程中,有時候會想要知道,變數的資料型態為何。

這時候可以使用TypeName來取得相關資訊,如果遇到這樣的狀況,不妨試試這個小技巧。



Point!

1.  基本格式

     TypeName(變數名)

2.  TypeName函數,可取得變數或物件資料型態,並以字串傳回



程式碼

Sub TypeName取得變數資料型態()

    ' 基本格式
    ' TypeName(變數名)

    ' TypeName函數
    ' 可取得變數或物件資料型態,並以字串傳回

    ' 範例1.
    Dim myInt As Integer

    ' 以TypeName函數取得myInt資料型態
    MsgBox TypeName(myInt)

    ' 範例2.
    Dim myStr As String

    ' 以TypeName函數取得myStr資料型態
    MsgBox TypeName(myStr)

End Sub


關於技巧9 : 使用TypeName函數取得變數資料型態可參考以下連結影片




技巧10 :  使用TypeName函數取得物件資料型態

在撰寫程式的過程中,有時候會想要知道,物件的資料型態為何。

這時候可以使用TypeName來取得相關資訊,如果遇到這樣的狀況,不妨試試這個小技巧。


Point!

1.  基本格式

     TypeName(變數名)

2.  TypeName函數,可取得變數或物件資料型態,並以字串傳回


程式碼

Sub TypeName取得物件資料型態()

    ' 基本格式
    ' TypeName(變數名)

    ' TypeName函數
    ' 可取得變數或物件資料型態,並以字串傳回

    ' 範例
    Dim myRange As Range
    Set myRange = Range("A1")

    ' 以TypeName函數取得myRange資料型態
    MsgBox TypeName(myRange)

    ' 釋放物件
    Set myRange = Nothing

End Sub


關於技巧10 : 使用TypeName函數取得物件資料型態可參考以下連結影片




技巧11 :  使用VarType函數取得變數資料型態

在撰寫程式的過程中,有時候會想要知道,變數的資料型態為何。

這時候可以使用VarType來取得相關資訊,如果遇到這樣的狀況,不妨試試這個小技巧。


Point!

1.  基本格式

    VarType(變數名)

2.  VarType函數,可取得變數資料型態,並以常數傳回

3. 回傳值和TypeName不同,

    TypeName函數,可取得變數物件資料型態,並以字串傳回

    VarType函數,可取得變數資料型態,並以常數傳回



程式碼

Sub VarType取得變數資料型態()

    ' 基本格式
    ' VarType(變數名)

    ' VarType函數
    ' 可取得變數資料型態,並以常數傳回

    ' 範例1.
    Dim myInt As Integer

    ' 以VarType函數取得myInt資料型態
    MsgBox VarType(myInt)

    ' 範例2.~
    Dim myStr As String

    ' 以VarType函數取得myStr資料型態
    MsgBox VarType(myStr)

End Sub


關於技巧11 : 使用VarType函數取得變數資料型態可參考以下連結影片




張貼留言 (0)
較新的 較舊