excel-vba的常用功能
- 1.普通功能
-
- 1.1.變量定義
- 1.2.日期計算
- 1.3.複制、粘貼、清空、删除
- 2.進階功能
-
- 2.1.計算相關
- 2.2.其他
1.普通功能
1.1.變量定義
在進行vba操作前,一般需要定義變量。如果不定義變量,預設變量的資料類型是Variant格式,這樣會占據大量的記憶體空間。
- 變量的幾種分類: Date、String、Integer、Double、Long、Variant
- 定義變量: Dim lastDate As Date
- 多個變量同時定義: Dim lastDateStr As String, todayStr As String
-
變量的資料類型: Debug.Print TypeName(lastDate)
’ 實作列印資訊的功能。其中,Debug.Print 可以輸出資訊(TypeName(lastDate))到立即視窗。
1.2.日期計算
- 今天: Debug.Print Date
- 昨天: Debug.Print VBA.DateAdd(“d”, -1, Date)
-
今天的日期格式轉換為字元串: Debug.Print Format(Date, “yyyymmdd”)
’ 輸出 20210422。或者可以使用Format(Date, “yyyy/m/d”) ,輸出 2021/4/22。
-
計算本月一共有多少天:
第1個步驟:計算下一個月的第一天,減掉1天就是本月的最後一天。
第2格步驟:計算最後一天的日期是幾号。
toMonth = DateSerial(Year(Date), month(DateAdd(“m”, 1, Date)), 1) ’ toMonth 是下月的1号。
monthDays = Day(DateAdd(“d”, -1, toMonth)) ’ 用于記錄本月有幾天。
- 計算目前日期相對整個月的時間進度情況: monthPre = Day(Date) / monthDays ’ 輸出是一個小數,需要使用Double或者Long進行存放。
- 計算目前日期相對整個月在第幾周: NowWeek = DateDiff(“ww”, DateSerial(Year(Date), month(Date), 1), Date)
1.3.複制、粘貼、清空、删除
-
複制
Selection.Copy
-
粘貼(包括公式和内容)
ActiveSheet.Paste
-
選擇性粘貼
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks :=False, Transpose:=False
-
清空内容,不清除格式
Selection.ClearContents
-
删除
Selection.Delete Shift:=xlUp ’ 下方表格上移
Selection.Delete Shift:=xlToLeft ’ 右方表格左移
-
頁面顯示左上角的單元格
Range(“A1”).Select
ActiveWindow.ScrollRow = 1 '設定目前工作表最上面顯示的行号
ActiveWindow.ScrollColumn = 1 '設定目前工作表最左邊顯示的列号
-
顯示第1個的行分組,第1個的列分組
ActiveSheet.Outline.ShowLevels RowLevels:=1
ActiveSheet.Outline.ShowLevels RowLevels:=0, ColumnLevels:=1
2.進階功能
2.1.計算相關
-
資料重新整理,公式重算
ActiveWorkbook.RefreshAll
Calculate
-
使用公式手動計算,加快vba運作速度
Application.Calculation = xlCalculationManual
Application.Calculation = xlCalculationAutomatic ’ 記得切換回自動計算
(備注:提速小方法http://blog.sina.cn/dpool/blog/s/blog_a575eb9401018pvp.html)
2.2.其他
-
代碼報錯,仍繼續執行
On Error Resume Next '忽略錯誤繼續執行VBA代碼,避免出現錯誤消息導緻代碼停止運作
-
等待3秒後繼續運作
Application.Wait (Now + TimeValue(“0:00:03”))
-
清空剪貼闆
Application.CutCopyMode = False
-
不切換螢幕
Application.ScreenUpdating = False
Application.ScreenUpdating = True ’ 結束時,記得加上螢幕重新整理
-
讓錯誤提示不出現
Application.EnableEvents=False ’ 讓事件失效
Application.EnableEvents=True ’ 結束時,記得加上讓事件生效