天天看点

[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 ’ 结束时,记得加上让事件生效

继续阅读