VBA Excel技巧精粹

发布时间:2024-12-22 16:33

如何在Excel中使用VBA编写宏 #生活技巧# #数码产品使用技巧# #设计软件使用技巧#

在VBA中窗口可以看到sheet1是哪张表,之后增加表,或者修改表的名字,移动表的位置等,该对应的表
都不会改变,可以防止以后表定位不准的问题

定义:dim i as Integer
循环:for i=10 to 1 step -2 ... next
for i=1 to sheets.count 这个循环数,不随着sheets.count的改变而改变
条件:if "..."="" then ... elseif ... else ... end if
条件结束循环:if "..."="" then exit for

删除表:
通过单元格删除:rng.EntireRow.Delete
注意从下往上删除,因为删除上面的单元格,或行,下一单元格或行将会向上移动,导致没有删除到
屏幕更新:
application.ScreenUpdating = False
弹出警告框:
application.DisplayAlerts = False
sheet1.delete
application.DisplayAlerts = True
application.ScreenUpdating = True
添加,复制等确定添加的位置:add , copy after := Sheets(Sheets.Count)
for 循环升级 for each
dim rng as Range
for each rng in range("a1:a10")
rng = 1(此时的rng等于a1,a2,...,a10)
next

 循环所有表
dim biao as worksheet
for each biao in sheets
next

打开工作表
workbooks.open filename:="d:\data\1.xlsx"
当前打开的工作表activeworkbook.sheets(1).range("a1") = "heheda"
保存:activeworkbook.save
关闭:activeworkbook.close
新建工作表:Workbooks.Add
另存为:activeworkbook.saveas filename:="d:\data\2.xlsx"

复制表到一张新的工作簿:sheet1.Copy

先点表,然后再点单元格
sheets(j).select
sheets(j).range("d22").select
当前选中的对象:selection.EntireRow.delete

操作单元格数据
[a10]
cells(2,3)第二行,第三列
range("a1:a10").select选中a1至a10
属性用来赋值,默认是value:range("a1").value = 10
sheets(range("d1").value).select
range("a1").offset(10,1).select 下移10行,右移1列
选中单元格,双击上边框,回到上边界
range("a10").end(xlup)
Range("a65536").End(xlUp).Row返回最后一行的行号

选择区域
range("a10").resize(1,4).select :选择一行四列
range("a10").entireRow.select:选择这一整行

range("h7:i7").copy range("n7"):会带有单元格格式一起复制,比如框线
entireRow整行复制,必须从a列开始放

合并单元格,可以配合resize使用
Range("a1:a2").Merge


delete:删除单元格
clearContents:清空内容

运行过程:call qk(调用函数)
autoFilter(自动筛选)

筛选:
Sheet1.Range("A1:F1048").AutoFilter Field:=4, Criteria1:="一车间"
筛选之后粘贴(筛选之后可以全选粘贴,即可以得到筛选出来的数据)
sheet1.range("A1:F1048").copy sheets(i).range("a1")
返回没有筛选的状态
Sheet1.Range("A1:F1048").AutoFilter

在最后一张表后新建一张表
sheets.add after:=sheets(sheets.count)
sheets(sheets.count).name = "123"
或者可以合并:sheets.add (after:=sheets(sheets.count)).name = "345"

建表之前,需要判断表名不重复
for each sht in sheets
    if sht.name=sheet1.range("a1") then
        k = 1
        exit for
    end if
next

拷贝数据
录制筛选的代码,复制:
sheet1.range("a1:f"&irow).copy sheets(j).range("a1")
sheet1.range("a1:f"&irow).authfilter

msgbox,inputbox
弹出对话框MsgBox "哒哒"
输入框:i = InputBox("你多大?")
MsgBox "原来你" & i & "岁了"

有两个变量,不使用range,使用cells(行,列)

with语句,可以省写:
with sheet2
    .range("a1")=6
    .range("a3")=16
    sheet3.range("a1") = 6
    .range("a4")=60
    .range("a6")=6
end with

cells表示整表

事件,双击工作表,选择worksheet,选择selectchange改变选择的单元格
关闭事件:application.enableevents = False

当点击或激活统计数据表的时候,自动刷新,事件:activate
激活表刷新:activeWorkbook.RefreshAll

工作簿事件,双击工作簿
带代码的文档,xlsm后缀

重要数据的自动备份,定期备份,当文件被点了保存
=now()会得到当前的日期加时间,自定义数字
=text(now(),"yyyymmddhhmmss")

网址:VBA Excel技巧精粹 https://www.yuejiaxmz.com/news/view/540138

相关内容

自动化任务:利用Excel VBA优化日常工作
运用Excel VBA创建高效财务管理模型
Excel VBA自动化数据处理教程及实践
Excel之VBA编程
Python操作Excel的Xlwings教程(八)——Excel使用VBA调用Python
Excel VBA小程序01
轻松掌握Excel数值替换技巧提升工作效率
【Excel】常态化繁杂操作实现自动化处理(无需VBA编程)
Excel单元格拆分技巧:快速整理数据的4种方法
Excel空格删除技巧:快速清理数据的5种方法

随便看看