VBA典型的技巧和示例

创建一个工作簿

sub xxx()
dim wb as workbook ,sht as worksheet ‘定义对象
set wb=workbook.add 
set sht=wb.worksheet(1)
with sht
.name="woqu"
.range("A1:A7")=array("1,""2","3")
end with
wb.saveas thiswork.path & "\员工花名册.xls"
activeworkbook.close
end sub()

判断工作簿是否打开

dim i as integer
for i = 1 to workbooks.count
if workbooks(i).name=“成绩表.xls” then
masbpox“文件已经打开”
exit sub
end if
next
msgbox “文件没打开”
end sub

判断工作簿是否存在

dim fil as string
fil = thisworkbook.path &“\员工花名册.xls”
if len(dir(fil))>0 then
msgbox"工作簿已存在"
else
msgbox"工作簿已不存在"
end if
’dir返回的是文件的名称,如果是空字符串的话,就是没有的意思

向尚未打开的工作簿中录入数据

dim wb as string ,xrow as integer ,arr
wb=thisworkbook.path&“\员工花名册.xls”
workbook.open(wb)
with activeworkbook.worksheets(1)
xrow=.range(“A1”).currentregion.rows.count+1'获取表格里的第一条空行号
arr= array(xrow-1,“1”,“2”,“2”)
.cells(xrow,1,resize(1,6)=arr
end with
activeworkbook.close savechanges:=true '关闭工作簿,保存修改

隐藏活动工作表外的所有工作表

dim sht as worksheet
for each sht in worksheets
if sht.name<>activesheet.name then
sht.visible=xlsheetveryhidden '深度隐藏工作表,不能通过格式菜单显示
end if
next

批量新建工作表

dim i as integer ,sht as worksheet
i=2
set sht = worksheet(“成绩表”)
do while sht.cell(i,“C”)<> ""
worksheet.add after:=worksheets(worksheet.count)'在最后面的工作表插入
activesheet.name=sht.cells(i,"C").value
i=i+1
loop

批量对数据进行分类

dim i as long,bj as string,rng as range
i=2
bj=cells(i,"C").value
do while bj<> ""
set rng=worksheets(bj).range("A65536").end(xlup).offset(1,0)
cells(i,"A").resize(1,7).copy rng '将记录复制到相应的工作表中
i=i+1
bj=cells(i,"C").value
loop

将工作表保存为新工作簿

'把哥哥工作表以单独的文件保存在相应文件夹中
application.screenupdating = false  '关闭屏幕更新
dim folder as string
folder = thisworkbook.path &“\班级表”
if len(dir(folder,vbdirectory))=0 then mkdir folder
dim sht as worksheet
for each sht in worksheets
sht.copy
activeworkbook.saveas folder & “\” & sht.name & “.xls”
activeworkbook.close
next
application.screenupdating = true

快速合并多表数据

rows("2:65536").clear
dim sht as  worksheet,xrow as integer ,rng as range
for each sht in worksheets
 if sht.name<>activesheet.name then
 set rng = range("A65536").end(xlup).offset(1,0)
 xrow=sht.range("A1").currentregion.rows.count-1
 	sht.range("A2").resize(xrow,7).copy rng
 	end if
 next
 

汇总同文件夹下多工作簿数据

dim bt as range ,r as long,c as long
r=1
c=8
range(cell(r+1,"A"),cells(65536,"C")).clearcontents
application.screenupdating = false 
dim filename as string, wb as workbook,erow as long,fn as string ,arr as variant 
filename=dir(thisworkbook.path & "\*.xls")
do while filename <>""
if filename<> thisworkbook.name then
erow=range("A1").currentregion.rows.count+1
fn = thisworkbook.path & "\" & filename
set wb = getobject(fn) '把fn代表的工作簿对象赋给变量
set sht = wb.worksheets(1)
arr = sht.range(cell(r+1,"A"),cells(65536,"C")).end(xlup).offset(0,8))
cells(erow,"A").resize(ubound(arr,1),ubound(arr,2))=arr
wb.close flase
end if
filename=dir
loop
application.screenupdating = truw

为工作表建立目录

rows("2:65536").clearcontents
dim sht as worksheet,irow as integer
irow = 2 
for each sht in worksheets
 cells(irow,"A").value= irow -1
Activesheet.hyperlinks.add anchor:=cells(irow,"B"),address:="",_
subaddress:="'" & sht.name & "'!A1",texttodisplay:=sht.name
irows=irow + 1
next

在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值