本博文,将主要记录VBA for Excel项目中遇到并解决的问题和不熟悉的知识点,不定期更新。
1.日期单元格前面加空格就变成文本了,find查找参数注意:what:=Cstr(Date),lookat:=2
2.
Function ff() ff = 123 MsgBox "hello" End Function
该函数在单元格中使用时,会先弹出 消息框 确定后,再返回 123,说明函数返回值是等该函数所有代码执行完才返回。
3.加号与&的区别?
1 “12” & “34” = “1234” 2 “12” + “34” = “1234” 3 4 5 “12” & 34 = “1234” 6 “12” + 34 = 46 ‘类型自动转换 7 8 9 “ab” & 34 = “ab34” 10 “ab” + 34 = ‘类型自动转换失败,报错
4.Range的不常用使用用法
1 Range("C1,D2,A1:A2").Cells.Count '个数为4 2 Range(Cells(1, 1), Cells(1, 4)).Cells.Count '个数为4 3 Range(Cells(1, 1)) ‘这种写法错误
5.给单元格区域赋值的不常见写法。
1 Range("A1:B1") = [{"编号", "目录"}] '写入标题,采用数组形式,可以一次性写入多个单元格
2. If [=SUM(1/COUNTIF(A1:A10,A1:A10))] < 10 Then MsgBox "区域中存在重复值,程序无法继续", vbOKOnly, "友情提示"
6.工作表的codeName属性就是VBE中每一张工作表对象的名称,可以在自己的属性窗口中修改,用codeName可以直接代表对应的工作表对象使用。
7.Worksheets(1).Copy 将直接生成一张未保存的工作簿,内容为Worksheets(1)
8.如果新建的工作簿未保存,则 Len(Dir(ActiveWorkbook.FullName)) = 0.
9.由于end释放一切变量(包括各种级别的变量,如:过程级,模块级等),所有a显示的始终是1
1 Sub t() 2 Static a As Byte 3 a = a + 1 4 MsgBox a 5 End 6 7 End Sub
10.range区域赋值给变量时,该变量下标为1. Evaluate函数创建的数组默认下标也是1