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