在该workbook中改动保存了,就自动备份
不要使用这个另存,thisWorkbook.SaveAs "d:\data\1.xlsx"
这样当另存完之后,会自动打开该另存文件1.xlsx,当前文件就被更改为1.xlsx
要保证所有操作都在原文件上,不能影响用户操作
有个偷偷保存的的事件:
在工作簿文件中编辑:workbook -- beforeSave
thisWorkbook.savecopyas "d:\data\1.xlsx"
当点击保存的时候,会偷偷的存一个备份文件
"d:\data\1.xlsx"改成"d:\data\"&format(now(), "yyyymmddhhmmss")&".xlsx"
如果记不住,录制宏,复制代码,修改代码就可以
工作表所有函数的集合:
application.WorksheetFunction.CountA(sheet2.range("a:a"))表二a列的非空个数
WorksheetFunction.CountIf(sheet2.range("f:f"), "男")
WorksheetFunction.VLookup(sheet1.range("d9"), sheet2.range("a:b"), 5, 0)
VBA发生错误,继续执行:
错误回避:
on error resume next
针对文本:文本型数字转为数字:val(l)
文本转数字:l = l*1(乘以1)
if vba.Information.IsNumeric(l) = False or l<0 then
if IsNumeric(l) = False or l<0 then
dim i as string
分割得到的是数组:split(range("a2"), "-")(0)
自定义公式:
function zmj(str as String, str1 as string, i as Integer)
if str = "男" then...
end function
function jqzf(str as String, str1 as string, i as Integer)
jqzf == split(str,str1)(i-1)
end function
sub cjb(str as string)
...
end sub
sub test()
call cjb(sheet1.range("a1"))
end sub
将VBA加载到excel主程序中
另存为xla或xlam默认加载宏
文件,选项,快速访问工具栏,用于所有文档
新建一张表,放入变量
dim sht as worksheet
set sht = sheets.add
sht.name = "2月"
dir:
如果有该文件,返回文件名(包括后缀),没有返回空,(要注意后缀xls,xlsx)
range("a1") = dir("d:\data\heheda.xls*")
有苏州.xls和苏州.xlsx
range("a1") = dir("d:\data\苏州.xls*")返回苏州.xls
range("a2") = dir 返回苏州.xlsx
range("a2") = dir 返回空
range("a2") = dir 错误
所有文件:dir("d:\data\*.xls*")
打开文件:workbooks.open("文件地址")
dim wb as wrokbook
set wb = workbooks.open("文件地址")
。。。
wb.close
多文件合并
dim wb as wrokbook
set wb = workbooks.open("文件地址")
wb.sheets(1).copy after:=thisWorkbook.sheets(thisWorkbook.sheets.count)
thisWorkbook.sheets(thisWorkbook.sheets.count).name = split(wb.name,".")(0)
wb.close
查找公式,找不到会报错,使用set不会报错
range("d:d").find("张三").select
'range("d:d").find(range("l3")).offset(0,3)
set rng = range("d:d").find(range("l3"))
if rng is Nothing then
msgbox "找不到"
dim sht as worksheet
set sht = activesheet