vba经典代码应用大全?1.首先,使用扩展XLSM将Excel文档(默认情况下是新的扩展XLSX)保存为一个支持宏的工作簿。2.按ALt+F11快速切换到VBA。3.击VBA窗口后进入界面,如图所示。4.双击此工作簿后,将弹出一个代码窗口。5.在代码窗口中,那么,vba经典代码应用大全?一起来了解一下吧。
Sub fuzi()
Range("a1:a22").Copy
Range("b5").Select
ActiveSheet.Paste '在选定区域进行粘贴(含格式)'
Application.CutCopyMode = False
‘不带格式粘贴
Range("a1:a22").Copy
Range("c5").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
End Sub
Sub 运行多少秒()
t = Timer
lrow1 = Range("a1").CurrentRegion.Rows.Count
lrow2 = Range("e1").CurrentRegion.Rows.Count
Range("a2:a" & lrow1).Copy
Range("e2:e" & lrow2).Select
ActiveSheet.Paste
Selection.NumberFormatLocal = "yyyy/m/d"
''--------------------------------------------
lrow3 = Range("b1").CurrentRegion.Rows.Count
lrow4 = Range("f1").CurrentRegion.Rows.Count
Range("b2:b" & lrow3).Copy
Range("f2:f" & lrow4).Select
ActiveSheet.Paste
Selection.NumberFormatLocal = "0.00%"
''---------------------------------------------
lrow5 = Range("c1").CurrentRegion.Rows.Count
lrow6 = Range("g1").CurrentRegion.Rows.Count
Range("c2:c" & lrow5).Copy
Range("g2:g" & lrow6).Select
ActiveSheet.Paste
Selection.NumberFormatLocal = "G/通用格式"
''---------------------------------------------
lrow7 = Range("d1").CurrentRegion.Rows.Count
lrow8 = Range("h1").CurrentRegion.Rows.Count
Range("d2:d" & lrow7).Copy
Range("h2:f" & lrow8).Select
ActiveSheet.Paste
Selection.NumberFormatLocal = "@"
MsgBox Timer - t & "秒完成"
End Sub
Sub 向右插入一列()
Worksheets("向右插入一列").Select
Columns("d:d").Insert shift:=xlToRight
End Sub
Sub 取消隐藏()
Worksheets("取消隐藏").Columns("b:h").EntireColumn.AutoFit '仅仅取消b - h列'
'Worksheets().UsedRange. EntireColumn.AutoFit'--整个表都取消
End Sub
Sub 隐藏()
Worksheets("隐藏").Select
Columns("A:H").ColumnWidth = 0
End Sub
Sub 判断统计() '等同于sumif功能'
Worksheets("判断统计").Select
Application.ScreenUpdating = False '关闭屏幕更新,看不到宏的执行过程,但提高宏运行速度
Application.EnableEvents = False '关闭事件,防止触发事情,提高运行速度
a = Range("a1").CurrentRegion.Rows.Count
For i = 2 To a
If Range("p" & i) > 90 Then
Range("u" & i) = "M3+"
ElseIf Range("p" & i) >= 61 Then
Range("u" & i) = "M3"
ElseIf Range("p" & i) >= 31 Then
Range("u" & i) = "M2"
Else: Range("u" & i) = "M1"
End If
Next
Range("Y21").Select
ActiveCell.FormulaR1C1 = "=SUMIFS(C[-13],C[-5],""M1"")"
Range("Y22").Select
ActiveCell.FormulaR1C1 = "=SUMIFS(C[-13],C[-5],""M2"")"
Range("Y23").Select
ActiveCell.FormulaR1C1 = "=SUMIFS(C[-13],C[-5],""M3"")"
Range("Y24").Select
ActiveCell.FormulaR1C1 = "=SUMIFS(C[-13],C[-5],""M3+"")"
Range("Z21").Select
ActiveCell.FormulaR1C1 = "=COUNTIF(C[-6],""M1"")"
Range("Z22").Select
ActiveCell.FormulaR1C1 = "=COUNTIF(C[-6],""M2"")"
Range("Z23").Select
ActiveCell.FormulaR1C1 = "=COUNTIF(C[-6],""M3"")"
Range("Z24").Select
ActiveCell.FormulaR1C1 = "=COUNTIF(C[-6],""M3+"")"
Application.EnableEvents = True
Application.ScreenUpdating = True '结束屏幕更新
End Sub
Sub 匹配()
Worksheets("匹配").Select
Columns("K").Clear
Range("K2").Select
ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-1],C[-10]:C[-9],2,0)"
Selection.AutoFill Destination:=Range("K2:K17"), Type:=xlFillDefault
Range("K2:K17").Select
Selection.Copy
Range("K2").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("M8").Select
Application.CutCopyMode = False
End Sub
Sub 匹配1()
Worksheets("匹配1").Select
Columns("B").Clear
Range("B2").Select
ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-1],被匹配!C[-1]:C,2,0)"
Selection.AutoFill Destination:=Range("B2:B17"), Type:=xlFillDefault
Range("B2:B17").Select
Selection.Copy
Range("B2").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("M8").Select
Application.CutCopyMode = False
End Sub
Sub 排序()
Dim rng As Range
Set rng = Range("A1:A22")
rng.Sort key1:="CONTRACTNO", order1:=xlDescending, Header:=xlYes
End Sub
Sub 筛选()
'筛选
irow = Range("a1").CurrentRegion.Rows.Count - 最大行
ActiveSheet.Range("1:A" & irow).AutoFilter field:=1, Criteria1:= _
"a15hhhhhhhhhh"
'复制A16
Range("A16").Select
Selection.Copy
'在G16的位置粘贴
Range("G16").Select
'带格式粘贴
ActiveSheet.Paste
'退出粘贴
Application.CutCopyMode = False
'退出筛选
ActiveSheet.Range("1:A" & irow).AutoFilter field:=1
End Sub
Sub 判断分组()
a = Range("a1").CurrentRegion.Rows.Count
For i = 2 To 43
If Range("A" & i) = "M1-1" Then
Range("D" & i) = Range("b" & i) / Range("c" & i) / 0.815
Else: Range("D" & i) = Range("b" & i) / Range("c" & i) / 0.095
End If
Next
End Sub
Sub 单元格相对引用值()
Range("A2").FormulaR1C1 = "=RC[1]&RC[2]"
End Sub
Sub 向下填充数据()
Range("b2").Select
ActiveCell.FormulaR1C1 = "=RC[-1]&""200"""
Range("B2").Select
Selection.AutoFill Destination:=Range("B2:B22"), Type:=xlFillDefault
Range("B2:B22").Select
End Sub
Sub 表格显示隐藏()
Worksheets("表格显示隐藏").Visible = True '打开隐藏表格'
End Sub
Sub 格式调整()
lrow1 = Range("a1").CurrentRegion.Rows.Count
lrow2 = Range("e1").CurrentRegion.Rows.Count
Range("a2:a" & lrow1).Copy
Range("e2:e" & lrow2).Select
ActiveSheet.Paste
Selection.NumberFormatLocal = "yyyy/m/d"
''--------------------------------------------
lrow3 = Range("b1").CurrentRegion.Rows.Count
lrow4 = Range("f1").CurrentRegion.Rows.Count
Range("b2:b" & lrow3).Copy
Range("f2:f" & lrow4).Select
ActiveSheet.Paste
Selection.NumberFormatLocal = "0.00%"
''---------------------------------------------
lrow5 = Range("c1").CurrentRegion.Rows.Count
lrow6 = Range("g1").CurrentRegion.Rows.Count
Range("c2:c" & lrow5).Copy
Range("g2:g" & lrow6).Select
ActiveSheet.Paste
Selection.NumberFormatLocal = "G/通用格式"
''---------------------------------------------
lrow7 = Range("d1").CurrentRegion.Rows.Count
lrow8 = Range("h1").CurrentRegion.Rows.Count
Range("d2:d" & lrow7).Copy
Range("h2:h" & lrow8).Select
ActiveSheet.Paste
Selection.NumberFormatLocal = "@"
End Sub
Sub 透视表()
Worksheets("透视表").Select
Columns("J:L").Clear
Columns("A:H").Select
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
"透视表!R1C1:R20C8", Version:=xlPivotTableVersion15).CreatePivotTable _
TableDestination:="透视表!R4C10", TableName:="数据透视表1", DefaultVersion:= _
xlPivotTableVersion15
Sheets("透视表").Select
Cells(4, 10).Select
With ActiveSheet.PivotTables("数据透视表1").PivotFields("组别")
.Orientation = xlRowField
.Position = 1
End With
ActiveSheet.PivotTables("数据透视表1").AddDataField ActiveSheet.PivotTables("数据透视表1" _
).PivotFields("可算回款金额"), "求和项:可算回款金额", xlSum
ActiveSheet.PivotTables("数据透视表1").AddDataField ActiveSheet.PivotTables("数据透视表1" _
).PivotFields("是否有回退"), "求和项:是否有回退", xlSum
With ActiveSheet.PivotTables("数据透视表1").PivotFields("求和项:是否有回退")
.Caption = "计数项:是否有回退"
.Function = xlCount
End With
ActiveWorkbook.ShowPivotTableFieldList = False
End Sub
不是高手,但是写一般的VBA代码没问题。这个代码是响应一个选择事件。
之前有设置保护工作表吧。现在好像注释了。
现在主要是响应一个区域孝稿乱内,如果选中其中的一个单元敬陪格,则这个单元格所在的行和列填充色改变。
如果需要写代码,或者交流学习,可以关注,也可以直巧档接向我提问,或者私信。
(1) Option Explicit
解释:强制对模块内所有变量进行声明
(2) Option Base 1
解释:指定数组的第一个下标为1
(3) On Error Resume Next
解释:忽略错误继续执行VBA代码,避免出现错误消息
第 1 页
编程简单 AGV/AMR 3步建
(4) On Error GoTo 100
解释:当错误发生时跳转到过程中的某个位置
(5) On Error GoTo 0
解释:恢复正常的错误提示
(6) Application.DisplayAlerts=False
解释:在程序执行过程中使出现的警告框不显示
(7) Application.DisplayAlerts
第 2 页
=True
解释:在程序执行过程中恢复显示警告框
(8) Application.ScreenUpdating=False
解释:关闭屏幕刷新
(9) Application.ScreenUpdating = True
解释段带历:打开屏幕刷新
第 3 页
(10)Workbooks.Add()
解释:创建一个新的工作簿
(11)Workbooks(“book1.xls”).Activate
解释:激活名为book1的工作簿
(12) ThisWorkbook.Save
解释握搜:保存工作簿
(13) ThisWorkbook.close
解释:关闭当前工作簿
第 4 页
(14)ActiveWorkbook.Sheets.Count
解释:获取活动工作薄中工作表数
(15)ActiveWorkbook.name
解释:返回活动工作薄的名称
(16) ThisWorkbook.Name
解释:返回当前工作簿名称
(17) ThisWorkbook.FullName
第 5 页
解行猜释:返回当前工作簿路径和名
(18) ActiveSheet.UsedRange.Rows.Count
解释:当前工作表中已使用的行数
(19) Rows.Count
第 6 页
解释:获取工作表的行数
(20)Sheets(Sheet1).Name= “Sum”
解释:将Sheet1命名为Sum
(21)ThisWorkbook.Sheets.Add Before:=
1:打开所有隐藏工作表2:循环宏
3:录制宏时调用“停止录制”栏
4:高级筛选5列不重复数据至指定表
5:双击单元执行宏(工作表代码)
6:双击指定区域单元执行宏(工作表代码)
7:进入单元执行宏(工作表代码)
8:进入指定区域单元执行宏(工作表代码)
9:在多个宏中依次循知肢键环执行一个(控件按钮代码)
10:在两个宏中依次循环执行一个并相应修改按钮名称(控件按钮代码)
11:在三个宏中依次循环执行一个并相应修改按钮名称(控件按钮代码)
12:根据A1单元文本隐藏/显示按钮(控件按钮代码)
13:当前单元返回按钮名称(控件按钮代码)
14:当前单元内容返回到按钮名称(控件按钮代码)
15:奇偶页分别打印
16:自动打印多工作表第一页
17:查找A列文本循环插入分页符
18:将A列最后数据行以上的所有B列图片大小调整为所在单元大小
19:返回光标所在行数20:在A1返回当前选中单元格数量
21:返回当前工作簿中工作表数量
22:返回光标选择区域的行数和列数
23:工作表中包含数据的最大行数
24:返回A列数据的最大行数
25:将所选区域文本插入新建文本框
26:批量插入地址批注
27:批量插入统一批注
28:以A1单元内容批量插入批注
29:不连续区域插入当前文件名和表名及地址
30:不连续区域录入当前单元地址
31:连续区域录入当前单元地址
32:返回当前单元地址
33:不连续区域录入当前日期
34:不连续区域录入当前数字日期
35:不连续区域录入当前日期和时间
36:不连续区域录入对勾
37:不连续区域录入当前文件名
38:不连续区域添加文本
39:不连续区域插入文本
40:从指定位置向下同时录入多单元指定内容
41:按aa工作表A列的内容排列工作表标签顺序
42:以A1单元文本作表名插入工作表
43:删除所有未选定工作表
44:工作表标签排序
45:定义指定工作表标签颜色
46:在目录表建立本工作簿中各表链接目录
47:建立工作表文本目录
48:查另一文件的所有表名
49:当前单元录入计算机名
50:当前单元录入计算机用户名
51:解除所有工作表保护
52:为指定工作表加指定密码保护表
53:在有密码的工作表执行代码
54:执行前需要验证密码的宏(控件按钮代码)
55:执行前需要验证密码的宏()
56:拷贝A1公式和格式到A2
57:复制单元数值
58:插入数值条件搭巧格式
59:插入透明批注
60:添加文本
61:光标定位到指定工作表A列最后数据行下一单元
62:定位选定单元格式相同的所有单元格
63:按当前单元文本定位
64:按固定文本定位
65:删除包含固定文本单元的行或列
66:定位数据及区域以上的空值
67:右侧单元自动加5(工作表代码)
68:当前单元加2
69:A列等于A列减B列
70:用于光标选定多区域跳转指定单元(工作表代码)
71:将A1单元录入的数据累加到B1单元(工作表代码)
72:在指定颜色区域选择单元时添加/取消"√"(工作表代码)
73:在指定区域选择单元时添加/取消"√"(工作表代码)
74:双击指定单元,循环录入文本(工作表代码)
75:双击指定单元,循环录入文本(工作表代码)
76:单元区域引用(工作表代码)
77:在指定区域选择单元时数值加1(工作表代码)
78:混合文本的编号
79:指定区域单元双击数据累加(工作表代码)
80:选择单元区域触发事件(工作表代码)
81:当修改指定单元内容时自动执行宏(工作表代码)
82:被饥洞指定单元内容限制执行宏
83:双击单元隐藏该行(工作表代码)
84:高亮显示行(工作表代码)
85:高亮显示行和列(工作表代码)
86:为指定工作表设置滚动范围(工作簿代码)
87:在指定单元记录打印和预览次数(工作簿代码)
88:自动数字金额转大写(工作表代码)
89:将所有工作表的A1单元作为单击按钮(工作簿代码)
90:闹钟——到指定时间执行宏(工作簿代码)
91:改变Excel界面标题的宏(工作簿代码)
92:在指定工作表的指定单元返回光标当前多选区地址(工作簿代码)
93:B列录入数据时在A列返回记录时间(工作表代码)
94:当指定区域修改时在其右侧的2个单元返回当前日期和时间(工作表代码)
95:指定单元显示光标位置内容(工作表代码)
96:每编辑一个单元保存文件
97:指定允许编辑区域
98:解除允许编辑区域限制
99:删除指定行
100:删除A列为指定内容的行
1:打开所有隐藏工作表
Sub打开所有隐藏工作表()
DimiAsInteger
Fori=1ToSheets.Count
Sheets(i).Visible=True
Nexti
EndSub
2:循环宏
Sub循环()
AAA=Range("C2")
DimiAsLong
DimtimesAsLong
times=AAA
'times代表循环次数,执行前把times赋值即可(不可小于1,不可大于2147483647)
Fori=1Totimes
Call过滤一行
IfRange("完成标志")="完成"Then
ExitFor
'假如名为'完成标志'的命名单元的值等于'完成',则退出循环,假如一开始就等于'完成',则只执行一次循环就退出
'IfSheets("传送参数").Range("A"&i).Text="完成"Then
ExitFor
'假如某列出现"完成"内容则退出循环
Nexti
EndSub
3:录制宏时调用“停止录制”栏
Sub录制宏时调用停止录制栏()
Application.CommandBars("StopRecording").Visible=True
EndSub
4:高级筛选5列不重复数据至指定表
Sub高级筛选5列不重复数据至Sheet2()
Sheets("Sheet2").Range("A1:E65536")=""'清除Sheet2的A:D列
Range("A1:E65536").AdvancedFilterAction:=xlFilterCopy,CopyToRange:=Sheet2.Range(_
"A1"),Unique:=True
Sheet2.Columns("A:E").SortKey1:=Sheet2.Range("A2"),Order1:=xlAscending,Header:=xlGuess,_
OrderCustom:=1,MatchCase:=False,Orientation:=xlTopToBottom,SortMethod_
:=xlPinYin
EndSub
5:双击单元执行宏(工作表代码)
PrivateSubWorksheet_BeforeDoubleClick(ByValTargetAsRange,CancelAsBoolean)
IfRange("$A$1")="关闭"Then
ExitSub
SelectCaseTarget.Address
Case"$A$4"
Call宏1
Cancel=True
Case"$B$4"
Call宏2
Cancel=True
Case"$C$4"
Call宏3
Cancel=True
Case"$E$4"
Call宏4
Cancel=True
EndSelect
EndSub
6:双击指定区域单元执行宏(工作表代码)
PrivateSubWorksheet_BeforeDoubleClick(ByValTargetAsRange,CancelAsBoolean)
IfRange("$A$1")="关闭"ThenExitSub
IfNotApplication.Intersect(Target,Range("A4:A9","C4:C9"))IsNothingThenCall打开隐藏表
EndSub
7:进入单元执行宏(工作表代码)
PrivateSubWorksheet_SelectionChange(ByValTargetAsRange)'以单元格进入代替按钮对象调用宏
IfRange("$A$1")="关闭"ThenExitSub
SelectCaseTarget.Address
Case"$A$5"'单元地址(Target.Address),或命名单元名字(Target.Name)
Call宏1
Case"$B$5"
Call宏2
Case"$C$5"
Call宏3
EndSelect
EndSub
8:进入指定区域单元执行宏(工作表代码)
PrivateSubWorksheet_SelectionChange(ByValTargetAsRange)
IfRange("$A$1")="关闭"ThenExitSub
IfNotApplication.Intersect(Target,Range("A4:A9","C4:C9"))IsNothingThenCall打开隐藏表
EndSub
9:在多个宏中依次循环执行一个(控件按钮代码)
PrivateSubCommandButton1_Click()
StaticRunMacroAsInteger
SelectCaseRunMacro
Case0
宏1
RunMacro=1
Case1
宏2
RunMacro=2
Case2
宏3
RunMacro=0
EndSelect
EndSub
10:在两个宏中依次循环执行一个并相应修改按钮名称(控件按钮代码)
PrivateSubCommandButton1_Click()
WithCommandButton1
If.Caption="保护工作表"Then
Call保护工作表
.Caption="取消工作表保护"
ExitSub
EndIf
If.Caption="取消工作表保护"Then
Call取消工作表保护
.Caption="保护工作表"
ExitSub
EndIf
EndWith
EndSub
11:在三个宏中依次循环执行一个并相应修改按钮名称(控件按钮代码)
OptionExplicitPrivateSubCommandButton1_Click()
WithCommandButton1
If.Caption="宏1"Then
Call宏1
.Caption="宏2"
ExitSub
EndIf
If.Caption="宏2"Then
Call宏2
.Caption="宏3"
ExitSub
EndIf
If.Caption="宏3"Then
Call宏3
.Caption="宏1"
ExitSub
EndIf
EndWith
EndSub
12:根据A1单元文本隐藏/显示按钮(控件按钮代码)
PrivateSubWorksheet_SelectionChange(ByValTargetAsRange)
IfRange("A1")>2Then
CommandButton1.Visible=1
Else
CommandButton1.Visible=0
EndIf
EndSub
PrivateSubCommandButton1_Click()
重排窗口
EndSub
13:当前单元返回按钮名称(控件按钮代码)
PrivateSubCommandButton1_Click()
ActiveCell=CommandButton1.Caption
EndSub
14:当前单元内容返回到按钮名称(控件按钮代码)
PrivateSubCommandButton1_Click()
CommandButton1.Caption=ActiveCell
EndSub
15:奇偶页分别打印
Sub奇偶页分别打印()
Dimi%,Ps%
Ps=ExecuteExcel4Macro("GET.DOCUMENT(50)")'总页数
MsgBox"现在打印奇数页,按确定开始."
Fori=1ToPsStep2
ActiveSheet.PrintOutfrom:=i,To:=i
Nexti
MsgBox"现在打印偶数页,按确定开始."
Fori=2ToPsStep2
ActiveSheet.PrintOutfrom:=i,To:=i
Nexti
EndSub
16:自动打印多工作表第一页
Sub自动打印多工作表第一页()
DimshAsInteger
Dimx
Dimy
Dimsy
Dimsyz
x=InputBox("请输入起始工作表名字:")
sy=InputBox("请输入结束工作表名字:")
y=Sheets(x).Index
syz=Sheets(sy).Index
Forsh=yTosyz
Sheets(sh).Select
Sheets(sh).PrintOutfrom:=1,To:=1
Nextsh
EndSub
17:查找A列文本循环插入分页符
Sub循环插入分页符()
'Selection=Workbooks("临时表").Sheets("表2").Range("A1")调用指定地址内容
DimiAsLong
DimtimesAsLong
times=Application.WorksheetFunction.CountIf(Sheet1.Range("a:a"),"分页")'times代表循环次数,执行前把times赋值即可(不可小于1,不可大于2147483647)
Fori=1Totimes
Call插入分页符
Nexti
EndSub
Sub插入分页符()
Cells.Find(What:="分页",After:=ActiveCell,LookIn:=xlValues,LookAt:=_
xlPart,SearchOrder:=xlByRows,SearchDirection:=xlNext,MatchCase:=False)_
.Activate
ActiveWindow.SelectedSheets.HPageBreaks.AddBefore:=ActiveCell
EndSub
Sub取消原分页()
Cells.Select
ActiveSheet.ResetAllPageBreaks
EndSub
18:将A列最后数据行以上的所有B列图片大小调整为所在单元大小
Sub将A列最后数据行以上的所有B列图片大小调整为所在单元大小()
DimPicAsPicture,i&
i=[A65536].End(xlUp).Row
ForEachPicInSheet1.Pictures
IfNotApplication.Intersect(Pic.TopLeftCell,Range("B1:B"&i))IsNothingThen
Pic.Top=Pic.TopLeftCell.Top
Pic.Left=Pic.TopLeftCell.Left
Pic.Height=Pic.TopLeftCell.Height
Pic.Width=Pic.TopLeftCell.Width
EndIf
Next
EndSub
19:返回光标所在行数
Sub返回光标所在行数()
x=ActiveCell.Row
Range("A1")=x
EndSub
20:在A1返回当前选中单元格数量
Sub在A1返回当前选中单元格数量()
[A1]=Selection.Count
EndSub
21:返回当前工作簿中工作表数量
Sub返回当前工作簿中工作表数量()
t=Application.Sheets.Count
MsgBoxt
EndSub
93:B列录入数据时在A列返回记录时间(工作表代码)
PublicSubWorksheet_Change(ByValTargetAsRange)
IfTarget.Column=2Then
Target.Offset(,-1)=Now
EndIf
EndSub
94:当指定区域修改时在其右侧的2个单元返回当前日期和时间(工作表代码)
PublicSubWorksheet_Change(ByValTargetAsRange)
IfNotApplication.Intersect(Target,[A1:A1000])IsNothingThen
IfTarget.Column=1Then
Target.Offset(,1)=Date
Target.Offset(,2)=Time
EndIf
EndIf
EndSub
PublicSubWorksheet_Change(ByValTargetAsRange)
IfNotApplication.Intersect(Target,[A1:A1000])IsNothingThen
IfTarget.Column=1Then
Target.Offset(,1)=Format(Now(),"yyyy-mm-dd")
Target.Offset(,2)=Format(Now(),"h:mm:ss")
EndIf
EndIf
EndSub
95:指定单元显示光标位置内容(工作表代码)
PrivateSubWorksheet_SelectionChange(ByValTAsRange)
Sheets(1).Range("A1")=Selection
EndSub
96:每编辑一个单元保存文件
PrivateSubWorksheet_Change(ByValTargetAsRange)
ThisWorkbook.Save
EndSub
97:指定允许编辑区域
Sub指定允许编辑区域()
ActiveSheet.ScrollArea="B8:G15"
EndSub
98:解除允许编辑区域限制
Sub解除允许编辑区域限制()
ActiveSheet.ScrollArea=""
EndSub
99:删除指定行
Sub删除指定行()
Workbooks("临时表").Sheets("表2").Range("5:5").Delete
EndSub
100:删除A列为指定内容的行
Sub删除A列为指定内容的行()
Dima,bAsInteger
a=Sheet1.[a65536].End(xlUp).Row
Forb=aTo2Step-1
IfCells(b,1).Value="删除"Then
Rows(b).Delete
EndIf
Next
EndSub
Visual Basic for Applications(简称VBA)是新一代标准宏语言,是基于Visual Basic for Windows 发展而来的。它与传统的汪郑宏语言不同,传统的宏语言不具有高级语言的特征,没有面向对象的程序设计概念和方法。而VBA 提供了面向对象的程序设计方法,提供了相当完整的程序设计语言。VBA 易于学习掌握,可以使用宏记录器记录用户的各种操作并将其转换为VBA 程序代码。这样用户可以容易地将日常工作转换为VBA 程序代码,使工作自动化。[1]
数据类型
基本数据类型
即Primary Type Data,下述列表的括号内为字节数:
Byte(1):无符号数类型,取值范围0-255
Boolean(2)
Integer(2)
Long(4)
Single(4)
Double(8)
Currency(8)
Decimal(14)
Date(8)
String
Object(4)
Variant戚余(根据分配确定)[2]
自定义的数据类型
相当于C语言的struct,例如:[2]
Type 自定义类型名 元素名 As 类型 … [元素名 As 类型] End Type
数组
Option Base 0 :数组索引值从0开始[2]
Option Base 1 :数组索引值从1开始
Dim MyArray(10) :声明一个数组变量,10是最大的可用的数组索引值
MyArray(5) = 101 :给数组的元素赋值
Dim Data(10,5) :声明一个二维数组变量
Data(1,1) = "A001" :给数组元素赋值
Dim cArr(-11 To 20, 1 To 3) As String :声明一个数组,定义数组索引值的上下界
Dim dArr() As String :声明动态数组
ReDim dArr(0 To 5, 1 To 2) :改变动态数组的尺寸默认把原数据清除。
以上就是vba经典代码应用大全的全部内容,《Excel VBA常用代码实战大全》主要介绍VBA常用对象的应用技巧、控件及用户窗体的应用技巧、对话框的应用技巧、函数的应用技巧,使用VBA操作文件等技巧,最后介绍了制作员工花名册、收据打印、员工考勤三个综合实例。