天天看點

[excel][vba][變量定義、日期計算、資料重新整理、公式重算]1.普通功能2.進階功能

excel-vba的常用功能

  • 1.普通功能
    • 1.1.變量定義
    • 1.2.日期計算
    • 1.3.複制、粘貼、清空、删除
  • 2.進階功能
    • 2.1.計算相關
    • 2.2.其他

1.普通功能

1.1.變量定義

在進行vba操作前,一般需要定義變量。如果不定義變量,預設變量的資料類型是Variant格式,這樣會占據大量的記憶體空間。

  1. 變量的幾種分類: Date、String、Integer、Double、Long、Variant
  2. 定義變量: Dim lastDate As Date
  3. 多個變量同時定義: Dim lastDateStr As String, todayStr As String
  4. 變量的資料類型: Debug.Print TypeName(lastDate)

    ’ 實作列印資訊的功能。其中,Debug.Print 可以輸出資訊(TypeName(lastDate))到立即視窗。

1.2.日期計算

  1. 今天: Debug.Print Date
  2. 昨天: Debug.Print VBA.DateAdd(“d”, -1, Date)
  3. 今天的日期格式轉換為字元串: Debug.Print Format(Date, “yyyymmdd”)

    ’ 輸出 20210422。或者可以使用Format(Date, “yyyy/m/d”) ,輸出 2021/4/22。

  4. 計算本月一共有多少天:

    第1個步驟:計算下一個月的第一天,減掉1天就是本月的最後一天。

    第2格步驟:計算最後一天的日期是幾号。

    toMonth = DateSerial(Year(Date), month(DateAdd(“m”, 1, Date)), 1) ’ toMonth 是下月的1号。

    monthDays = Day(DateAdd(“d”, -1, toMonth)) ’ 用于記錄本月有幾天。

  5. 計算目前日期相對整個月的時間進度情況: monthPre = Day(Date) / monthDays ’ 輸出是一個小數,需要使用Double或者Long進行存放。
  6. 計算目前日期相對整個月在第幾周: NowWeek = DateDiff(“ww”, DateSerial(Year(Date), month(Date), 1), Date)

1.3.複制、粘貼、清空、删除

  1. 複制

    Selection.Copy

  2. 粘貼(包括公式和内容)

    ActiveSheet.Paste

  3. 選擇性粘貼

    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks :=False, Transpose:=False

  4. 清空内容,不清除格式

    Selection.ClearContents

  5. 删除

    Selection.Delete Shift:=xlUp ’ 下方表格上移

    Selection.Delete Shift:=xlToLeft ’ 右方表格左移

  6. 頁面顯示左上角的單元格

    Range(“A1”).Select

    ActiveWindow.ScrollRow = 1 '設定目前工作表最上面顯示的行号

    ActiveWindow.ScrollColumn = 1 '設定目前工作表最左邊顯示的列号

  7. 顯示第1個的行分組,第1個的列分組

    ActiveSheet.Outline.ShowLevels RowLevels:=1

    ActiveSheet.Outline.ShowLevels RowLevels:=0, ColumnLevels:=1

2.進階功能

2.1.計算相關

  1. 資料重新整理,公式重算

    ActiveWorkbook.RefreshAll

    Calculate

  2. 使用公式手動計算,加快vba運作速度

    Application.Calculation = xlCalculationManual

    Application.Calculation = xlCalculationAutomatic ’ 記得切換回自動計算

    (備注:提速小方法http://blog.sina.cn/dpool/blog/s/blog_a575eb9401018pvp.html)

2.2.其他

  1. 代碼報錯,仍繼續執行

    On Error Resume Next '忽略錯誤繼續執行VBA代碼,避免出現錯誤消息導緻代碼停止運作

  2. 等待3秒後繼續運作

    Application.Wait (Now + TimeValue(“0:00:03”))

  3. 清空剪貼闆

    Application.CutCopyMode = False

  4. 不切換螢幕

    Application.ScreenUpdating = False

    Application.ScreenUpdating = True ’ 結束時,記得加上螢幕重新整理

  5. 讓錯誤提示不出現

    Application.EnableEvents=False ’ 讓事件失效

    Application.EnableEvents=True ’ 結束時,記得加上讓事件生效

繼續閱讀