vba常用代码大全(EXCEL表VBA代码如何实现多条件判断,然后自动备注判断的结果数据问题如图,在线等,急!!求代码)

本文目录
- EXCEL表VBA代码如何实现多条件判断,然后自动备注判断的结果数据问题如图,在线等,急!!求代码
- VBA 工作薄中所有工作表怎么用代码表示
- 电子表格 VBA代码解释,谢谢
- 以下为 excel vba汇总代码,谁能帮我注释!!
- 求excel表格VBS宏自动运算代码,具体如下
- VBA-对应excel日常常用操作代码
- 求VBA代码大全
- 如何用vba代码实现将工作表1A列名单按工作表2的格式复制谢谢!
- VBA常用技巧代码解析
EXCEL表VBA代码如何实现多条件判断,然后自动备注判断的结果数据问题如图,在线等,急!!求代码
亲,代码如下。用了字典+数组,速度更快。附件已上传。
打开你的Excel文件,按“Alt+F11”打开VBA窗口,然后在左侧双击对应的Sheet,右侧空白处粘贴下面的代码。关闭VBA窗口。然后按“Alt+F8”打开宏窗口,选择刚插入的宏,点击“执行”。
Sub tj()
Dim d, ADArr, EArr
Set d = CreateObject("Scripting.Dictionary")
Dim r, i As Long
r = Cells(Rows.Count, "A").End(xlUp).Row
ADArr = Range("A2").Resize(r - 1, 4)
EArr = Range("E2").Resize(r - 1, 1)
For i = 1 To UBound(ADArr)
d(ADArr(i, 1) & ADArr(i, 2) & ADArr(i, 3)) = d(ADArr(i, 1) & ADArr(i, 2) & ADArr(i, 3)) + ADArr(i, 4)
Next
For i = 1 To UBound(EArr)
If d(ADArr(i, 1) & ADArr(i, 2) & ADArr(i, 3)) 》= 10 Then EArr(i, 1) = "大客户" Else EArr(i, 1) = "小客户"
Next
Range("E2").Resize(r - 1, 1) = EArr
Set d = Nothing
End Sub
VBA 工作薄中所有工作表怎么用代码表示
在所有工作表中寻找某个工作表,需要循环遍历
代码如下:
Sub main
for each s in sheets’以此循环遍历所有工作表
if s.name= "ABC" then’如果工作表的名称为“ABC”
.....’则要执行的代码,此处省略,根据需要自行添加
exit for ‘找到工作表后,可以退出循环,提高效率
end if
next
end sub
电子表格 VBA代码解释,谢谢
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
’定义程序名称为 workbook_sheetactivate,返回值为sh
Dim sh1 As Worksheet ’sh1为工作表对象
Dim sh3 As Worksheet ’sh1为工作表对象
Dim r As Range ’r为range对象
If Me.Sheets.Count 》 1 Then ’当前表格的表单数大于1
Set sh1 = Me.Sheets.Item(Me.Sheets.Count)‘sh1赋值为当前页的最大的数值顺序的页,及最右变得页(默认)
以下为 excel vba汇总代码,谁能帮我注释!!
Sub 测试() ‘建立一个公共模块的的宏,宏名为“测试”
P = ThisWorkbook.Path & "\Êý¾Ý\" ’P=这个工作簿的地址及文件名
F = Dir(P & "*.*") ‘F=文件夹的地地址及任意格式文件
Set d = CreateObject("scripting.dictionary") ’设置一个工程
ReDim brr(1 To 10000, 1 To 12) ’定义一个二维数组brr(),1到10000行,1到12列
Application.ScreenUpdating = False ‘禁止屏幕更新
Do While F 《》 "" ’建立一个循环 ,如果F 不等于空白则循环
Set wb = GetObject(P & F) ‘设置 Wb为一个打开P地址及文件
For Each sh In wb.Sheets ’ 建立遍历所有表单的循环
arr = sh.UsedRange ‘数组arr=这个表单的使用区域
For i = 5 To UBound(arr) ’建立一个从5到这个数组最后一个的循环
If Not d.Exists(arr(i, 1)) Then ‘建一个判断工程D的数组存在时则进行以下代码
m = m + 1: d(arr(i, 1)) = m ’实现数据第增
For j = 1 To 12 ‘建立一个从1到12的循环
brr(m, j) = arr(i, j) ’实现数据交换
Next ‘回归循环
Else: j = 0 ’执行不满上一条件时进行如下代码
For j = 2 To 12 ‘建立一个从2到12的循环
brr(d(arr(i, 1)), j) = brr(d(arr(i, 1)), j) + arr(i, j) ’实现数据第增
Next ‘回归循环
End If ‘结束判断
Next ‘回归循环
Next ‘回归循环
Workbooks(F).Close False 强行关闭名为F变量的文件
F = Dir ’直到遍历此文件夹的所有文件
Loop ‘回归循环
Range("a5").Resize(m - 1, 12) = brr ’实现数组的值填写入表单
Application.ScreenUpdating = True ‘恢复屏幕更新
End Sub 结束整个程序
求excel表格VBS宏自动运算代码,具体如下
以下是一个符合您要求的 VBA 代码示例,可以用于自动运算 Excel 表格中的数据:
Sub AutoCalculate()
Dim i As Integer
Dim randomNum As Double
Dim result As Double
For i = 1 To 5 ’ 假设需要计算的行数为5行
randomNum = Rnd() * 0.2 + 0.8 ’ 生成80%到100%的随机数
Range("A" & i).Value = randomNum ’ 在A列中写入随机数
randomNum = Rnd() * 0.2 + 0.8 ’ 生成80%到100%的随机数
Range("B" & i).Value = randomNum ’ 在B列中写入随机数
randomNum = Rnd() * 0.2 + 0.8 ’ 生成80%到100%的随机数
Range("C" & i).Value = randomNum ’ 在C列中写入随机数
result = Range("C" & i).Value / Range("A" & i).Value + Range("B" & i).Value
If result 》= 0.2 Then ’ 如果结果不小于20%
MsgBox "第" & i & "行不符合要求,需要重新计算。"
Range("A" & i & ":C" & i).ClearContents ’ 清空该行的数据
End If
Next i
End Sub
您可以将上述代码复制粘贴到 Excel 的 VBA 器中,然后设置一个按钮来触发该代码的执行。当按钮被点击时,该代码将会自动在表格中生成随机数,并自动判断是否符合要求。如果某个行的计算结果不符合要求,该行会被清空,然后重新计算。当所有的行都符合要求后,程序执行结束。
VBA-对应excel日常常用操作代码
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("h3: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,""M1"")"
Range("Y22").Select
ActiveCell.FormulaR1C1 = "=SUMIFS(C,""M2"")"
Range("Y23").Select
ActiveCell.FormulaR1C1 = "=SUMIFS(C,""M3"")"
Range("Y24").Select
ActiveCell.FormulaR1C1 = "=SUMIFS(C,""M3+"")"
Range("Z21").Select
ActiveCell.FormulaR1C1 = "=COUNTIF(C,""M1"")"
Range("Z22").Select
ActiveCell.FormulaR1C1 = "=COUNTIF(C,""M2"")"
Range("Z23").Select
ActiveCell.FormulaR1C1 = "=COUNTIF(C,""M3"")"
Range("Z24").Select
ActiveCell.FormulaR1C1 = "=COUNTIF(C,""M3+"")"
Application.EnableEvents = True
Application.ScreenUpdating = True ’结束屏幕更新
End Sub
Sub 匹配()
Worksheets("匹配").Select
Columns("K").Clear
Range("K2").Select
ActiveCell.FormulaR1C1 = "=VLOOKUP(RC,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: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"
End Sub
Sub 向下填充数据()
Range("b2").Select
ActiveCell.FormulaR1C1 = "=RC&""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("h3: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:打开所有隐藏工作表
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 打开所有隐藏工作表()
Dim i As Integer
For i = 1 To Sheets.Count
Sheets(i).Visible = True
Next i
End Sub
2:循环宏
Sub 循环()
AAA = Range("C2")
Dim i As Long
Dim times As Long
times = AAA
’times代表循环次数,执行前把times赋值即可(不可小于1,不可大于2147483647)
For i = 1 To times
Call 过滤一行
If Range("完成标志") = "完成" Then
Exit For
’假如名为’完成标志’的命名单元的值等于’完成’,则退出循环,假如一开始就等于’完成’,则只执行一次循环就退出
’If Sheets("传送参数").Range("A" & i).Text = "完成" Then
Exit For
’假如某列出现"完成"内容则退出循环
Next i
End Sub
3:录制宏时调用“停止录制”工具栏
Sub 录制宏时调用停止录制工具栏()
Application.CommandBars("Stop Recording").Visible = True
End Sub
4:高级筛选5列不重复数据至指定表
Sub 高级筛选5列不重复数据至Sheet2()
Sheets("Sheet2").Range("A1:E65536") = "" ’清除Sheet2的A:D列
Range("A1:E65536").AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Sheet2.Range( _
"A1"), Unique:=True
Sheet2.Columns("A:E").Sort Key1:=Sheet2.Range("A2"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod _
:=xlPinYin
End Sub
5:双击单元执行宏(工作表代码)
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Range("$A$1") = "关闭" Then
Exit Sub
Select Case Target.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
End Select
End Sub
6:双击指定区域单元执行宏(工作表代码)
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Range("$A$1") = "关闭" Then Exit Sub
If Not Application.Intersect(Target, Range("A4:A9", "C4:C9")) Is Nothing Then Call 打开隐藏表
End Sub
7:进入单元执行宏(工作表代码)
Private Sub Worksheet_SelectionChange(ByVal Target As Range) ’以单元格进入代替按钮对象调用宏
If Range("$A$1") = "关闭" Then Exit Sub
Select Case Target.Address
Case "$A$5" ’单元地址(Target.Address),或命名单元名字(Target.Name)
Call 宏1
Case "$B$5"
Call 宏2
Case "$C$5"
Call 宏3
End Select
End Sub
8:进入指定区域单元执行宏(工作表代码)
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Range("$A$1") = "关闭" Then Exit Sub
If Not Application.Intersect(Target, Range("A4:A9","C4:C9")) Is Nothing Then Call 打开隐藏表
End Sub
9:在多个宏中依次循环执行一个(控件按钮代码)
Private Sub CommandButton1_Click()
Static RunMacro As Integer
Select Case RunMacro
Case 0
宏1
RunMacro = 1
Case 1
宏2
RunMacro = 2
Case 2
宏3
RunMacro = 0
End Select
End Sub
10:在两个宏中依次循环执行一个并相应修改按钮名称(控件按钮代码)
Private Sub CommandButton1_Click()
With CommandButton1
If .Caption = "保护工作表" Then
Call 保护工作表
.Caption = "取消工作表保护"
Exit Sub
End If
If .Caption = "取消工作表保护" Then
Call 取消工作表保护
.Caption = "保护工作表"
Exit Sub
End If
End With
End Sub
11:在三个宏中依次循环执行一个并相应修改按钮名称(控件按钮代码)
Option Explicit Private Sub CommandButton1_Click()
With CommandButton1
If .Caption = "宏1" Then
Call 宏1
.Caption = "宏2"
Exit Sub
End If
If .Caption = "宏2" Then
Call 宏2
.Caption = "宏3"
Exit Sub
End If
If .Caption = "宏3" Then
Call 宏3
.Caption = "宏1"
Exit Sub
End If
End With
End Sub
12:根据A1单元文本隐藏/显示按钮(控件按钮代码)
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Range("A1") 》 2 Then
CommandButton1.Visible = 1
Else
CommandButton1.Visible = 0
End If
End Sub
Private Sub CommandButton1_Click()
重排窗口
End Sub
13:当前单元返回按钮名称(控件按钮代码)
Private Sub CommandButton1_Click()
ActiveCell = CommandButton1.Caption
End Sub
14:当前单元内容返回到按钮名称(控件按钮代码)
Private Sub CommandButton1_Click()
CommandButton1.Caption = ActiveCell
End Sub
15:奇偶页分别打印
Sub 奇偶页分别打印()
Dim i%, Ps%
Ps = ExecuteExcel4Macro("GET.DOCUMENT(50)") ’总页数
MsgBox "现在打印奇数页,按确定开始."
For i = 1 To Ps Step 2
ActiveSheet.PrintOut from:=i, To:=i
Next i
MsgBox "现在打印偶数页,按确定开始."
For i = 2 To Ps Step 2
ActiveSheet.PrintOut from:=i, To:=i
Next i
End Sub
16:自动打印多工作表第一页
Sub 自动打印多工作表第一页()
Dim sh As Integer
Dim x
Dim y
Dim sy
Dim syz
x = InputBox("请输入起始工作表名字:")
sy = InputBox("请输入结束工作表名字:")
y = Sheets(x).Index
syz = Sheets(sy).Index
For sh = y To syz
Sheets(sh).Select
Sheets(sh).PrintOut from:=1, To:=1
Next sh
End Sub
17:查找A列文本循环插入分页符
Sub 循环插入分页符()
’ Selection = Workbooks("临时表").Sheets("表2").Range("A1") 调用指定地址内容
Dim i As Long
Dim times As Long
times = Application.WorksheetFunction.CountIf(Sheet1.Range("a:a"), "分页") ’times代表循环次数,执行前把times赋值即可(不可小于1,不可大于2147483647)
For i = 1 To times
Call 插入分页符
Next i
End Sub
Sub 插入分页符()
Cells.Find(What:="分页", After:=ActiveCell, LookIn:=xlValues, LookAt:= _
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False) _
.Activate
ActiveWindow.SelectedSheets.HPageBreaks.Add Before:=ActiveCell
End Sub
Sub 取消原分页()
Cells.Select
ActiveSheet.ResetAllPageBreaks
End Sub
18:将A列最后数据行以上的所有B列图片大小调整为所在单元大小
Sub 将A列最后数据行以上的所有B列图片大小调整为所在单元大小()
Dim Pic As Picture, i&
i = .End(xlUp).Row
For Each Pic In Sheet1.Pictures
If Not Application.Intersect(Pic.TopLeftCell, Range("B1:B" & i)) Is Nothing Then
Pic.Top = Pic.TopLeftCell.Top
Pic.Left = Pic.TopLeftCell.Left
Pic.Height = Pic.TopLeftCell.Height
Pic.Width = Pic.TopLeftCell.Width
End If
Next
End Sub
19:返回光标所在行数
Sub 返回光标所在行数()
x = ActiveCell.Row
Range("A1") = x
End Sub
20:在A1返回当前选中单元格数量
Sub 在A1返回当前选中单元格数量()
= Selection.Count
End Sub
21:返回当前工作簿中工作表数量
Sub 返回当前工作簿中工作表数量()
t = Application.Sheets.Count
MsgBox t
End Sub
93:B列录入数据时在A列返回记录时间(工作表代码)
Public Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 2 Then
Target.Offset(, -1) = Now
End If
End Sub
94:当指定区域修改时在其右侧的2个单元返回当前日期和时间(工作表代码)
Public Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Target, ) Is Nothing Then
If Target.Column = 1 Then
Target.Offset(, 1) = Date
Target.Offset(, 2) = Time
End If
End If
End Sub
Public Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Target, ) Is Nothing Then
If Target.Column = 1 Then
Target.Offset(, 1) = Format(Now(), "yyyy-mm-dd")
Target.Offset(, 2) = Format(Now(), "h:mm:ss")
End If
End If
End Sub
95:指定单元显示光标位置内容(工作表代码)
Private Sub Worksheet_SelectionChange(ByVal T As Range)
Sheets(1).Range("A1") = Selection
End Sub
96:每一个单元保存文件
Private Sub Worksheet_Change(ByVal Target As Range)
ThisWorkbook.Save
End Sub
97:指定允许区域
Sub 指定允许区域()
ActiveSheet.ScrollArea = "B8:G15"
End Sub
98:解除允许区域限制
Sub 解除允许区域限制()
ActiveSheet.ScrollArea = ""
End Sub
99:删除指定行
Sub 删除指定行()
Workbooks("临时表").Sheets("表2").Range("5:5").Delete
End Sub
100:删除A列为指定内容的行
Sub 删除A列为指定内容的行()
Dim a, b As Integer
a = Sheet1..End(xlUp).Row
For b = a To 2 Step -1
If Cells(b, 1).Value = "删除" Then
Rows(b).Delete
End If
Next
End Sub
如何用vba代码实现将工作表1A列名单按工作表2的格式复制谢谢!
按Alt+F11打开VBA器,在左侧插入模块,双击模块,在右侧粘贴代码。
代码如下:
Sub 数据转换()
Dim i&, irow&
For i = 2 To 10 Step 3 ’遍历2至10行,步长3
irow = Range("E" & Rows.Count).End(3).Row + 1 ’赋值irow等于E列的上界行号+1
If Range("E1") = "" Then irow = 1 ’如果E1是空的,那么重新赋值irow等于1
Range("A1").Resize(1, 3).Copy ’复制标题区
Range("E" & irow).PasteSpecial Paste:=xlPasteAll, Transpose:=True ’转置粘贴到E列
Range("A" & i).Resize(3, 3).Copy ’复制数据区
Range("F" & irow).PasteSpecial Paste:=xlPasteAll, Transpose:=True ’转置粘贴到F列
Next
End Sub
如图,粘贴到Sheet2表,注意我画出来的四个地方,添加上Sheet2.即可。
代码如下:
Sub 数据转换()
Dim i&, irow&
For i = 2 To 10 Step 3 ’遍历2至10行,步长3
irow = Sheet2.Range("E" & Rows.Count).End(3).Row + 1 ’赋值irow等于Sheet2表E列的上界行号+1
If Sheet2.Range("E1") = "" Then irow = 1 ’如果Sheet2表E1是空的,那么重新赋值irow等于1
Range("A1").Resize(1, 3).Copy ’复制标题区
Sheet2.Range("E" & irow).PasteSpecial Paste:=xlPasteAll, Transpose:=True ’转置粘贴到Sheet2表的E列
Range("A" & i).Resize(3, 3).Copy ’复制数据区
Sheet2.Range("F" & irow).PasteSpecial Paste:=xlPasteAll, Transpose:=True ’转置粘贴到Sheet2表的F列
Next
End Sub
VBA常用技巧代码解析
在VBA中,可以利用Range对象的Comment属性判断单元格是否存在批注,如下面的代码所示。 复制内容到剪贴板 代码:#001 Sub HasComment()
#002 If Range("A1").Comment Is Nothing Then
#003 MsgBox "A1单元格中没有批注!"
#004 Else
#005 MsgBox "A1单元格中批注内容为:" & Chr(13) & Range("A1").Comment.Text
#006 End If
#007 End Sub代码解析:
HasComment过程判断A1单元格是否存在批注,并用消息框显示批注信息。
Range对象的Comment属性返回一个批注对象,如果指定的单元格不存在批注,该属性返回Nothing。
运行HasComment过程结果如图所示。
14-2 为单元格添加批注
如果希望为单元格添加批注,那么可以使用AddComment方法,如下面的代码所示。 复制内容到剪贴板 代码:#001 Sub Comment_Add()
#002 With Range("A1")
#003 If .Comment Is Nothing Then
#004 .AddComment Text:=.Value
#005 .Comment.Visible = True
#006 End If
#007 End With
#008 End Sub代码解析:
Comment_Add判断单元格A1中是否存在批注,如果没有批注则为单元格A1添加批注并将单元格数值作为批注文本,同时显示批注对象。
第4行代码使用Range对象的AddComment方法为单元格添加批注。该方法只有一个参数Text,代表批注文本。如果单元格已经存在批注,则该方法返回一个错误。
第5行代码显示批注对象,Visible属性确定对象是否可视。
当单元格A1中不存在批注时,运行代码后的结果如图所示。
14-3 删除单元格中的批注
如果需要删除单元格中的批注,那么可以使用ClearComments方法、ClearNotes方法或者Delete方法,如下面的代码所示。 复制内容到剪贴板 代码:#001 Sub Commentdel()
#002 On Error Resume Next
#003 Range("A1").ClearComments
#004 Range("A2").ClearNotes
#005 Range("A3").Comment.Delete
#006 End Sub格中的批注。
第2行代码错误处理语句,如果单元格中没有批注,那么运行第5行代码时会发生错误,所以使用On Error语句来忽略错误。
第3行代码使用ClearComments方法删除单元格A1中的批注。ClearComments方法清除指定区域的所有单元格批注,语法如下:
expression.ClearComments
第4行代码使用ClearNotes方法删除A2单元格中的批注。ClearNotes方法清除指定区域中所有单元格的附注和语音批注,语法如下:
expression.ClearNotes
第5行代码使用Delete方法删除删除A3单元格中的批注.Range对象的Comment属性返回一个Comment对象,该对象代表与该区域左上角单元格相关联的批注。

更多文章:
win7系统重新安装(旧电脑怎么重新win7系统 老电脑重装win7新系统方法介绍)
2026年10月11日 08:20
地下城与勇士手游贴吧(地下城与勇士手游贴吧狂战带火炬还是屠戮)
2026年10月11日 04:30








