VBA常用语句
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
获取名字:
WorkbookName主表 =
Sheet透视表 =
选定:
Windows(WorkbookName主表).Activate
Sheets("取数").Select
Range("A1").Select
Range("K1:M3").Select
单元格赋值:
Range("A1")="Abc"
[A1]="Abc"
Cells(行, 列)=""
单元格跨薄引用(不打开工作薄而提取数据):
='F:\负债业务日报\prg\[模板]金融资产'!F5:F5
或:
Range("A28").FormulaArray = "=[模板]金融资产!D4:D4"
Range("A28").Formula = "=[模板]金融资产!D4:D4"
是否显示警告信息:
= False 'True= 显示警告信息
显示提示信息:
MsgBox "包括完整路径的工作簿名称为:" &
选择是否提示:
If MsgBox("设为汇总的单元格是:" & & " 确定吗", vbYesNo) = vbNo Then Exit Sub 关闭薄:
Windows(Workbook表).Close
删除子表:
Sheets("操作步骤").Delete 或:
Sheets(Sheet透视表).Select
删除行
Rows("2:316").Select
= False
Shift:=xlUp
Range("A2").Select
删除单元格:
Range("B5").Delete
对象的完整引用:
Windows("模板").Activate
Range("A28") = ("模板20_表内数据转换").Sheets("操作步骤").Range("F7")更简洁地:
[A28]=Workbooks("模板").Sheets("操作步骤").Range("F7")
复制单元格(带格式):
Sub Macro1()
Range("A1:C3").Select
Range("C1").Select
End Sub
同薄复制单元格(带格式)
Sub Macro_1()
Range("A1").Copy Range("C1")
End Sub
同薄复制单元格区域(空白为边界)
Sub RngCopy()
Range("A1"). Range("G1") 'G1应在当前活动工作表
或
Windows("模板").Activate
Worksheets("操作步骤").Range("F7"). Worksheets("发布0").Range("D9")或 Sheets("操作步骤").Range("F7"). Sheets("发布0").Range("D9")
End Sub
同薄复制单元格,去掉多余的激活和选择
Range("A1").Copy Sheets("Sheet2").Range("B1")
通过数组读写单元内容(不带格式):
Sub RngArr()
Dim arr As Variant '定义变量
arr = Range("A1:C3").Value '将A1:C3单元格的内容存储到数组arr里Range("E1:G3").Value = arr '将数组arr的数据写入E1:G3单元格区域End Sub
实例:
Dim arr As Variant
Windows("模板").Activate
arr = Sheets("金融资产").Range("D4:AX82").Value
'
Windows("模板").Activate
Sheets("金融资产").Range("D4:AX82").Value = arr
全表复制粘贴:
Windows(Workbook表).Activate
Sheets("表1").Select
'全选
Windows(WorkbookName主表).Activate
Sheets("表2").Select
Windows(Workbook表).Close
复制值:
Filename:="存款表.xls"
Windows("模板").Activate
Sheets("发布").Select
Range("C4:H4").Select
Range(Selection, (xlDown)).Select 'Shift+Ctrl+下键
' Range(Selection, (xlToRight)).Select 'Shift+Ctrl+右键' Range(Selection, (xlLastCell)).Select 'Ctrl+End 键
Windows("存款表.xls").Activate
Sheets("人民币").Select
Range("C4").Select
Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False '复制值
保存薄:
新建薄并保存修改结果:(复制区域SUB,在下面)
WorkbookName新薄 =
Call 复制区域SUB((WorkbookName日报表), "发布3", "A1:CF82", (WorkbookName新薄), "Sheet1", "A1")
Workbooks(WorkbookName新薄).Close SaveChanges:=True, Filename:=C_PRG路径 & "测试表.xls"
原名保存文件,不显示警告信息框
= False
= True
关闭不保存,不显示警告信息框
= False '不显示
= True '显示
是否显示屏幕变化
= False
= True
是否显示Excel界面
= False '不显示Excel界面 True 'False
= True
打开文件:
TXT_Name = ("文本文件(*.txt), *.txt") '获取文件
Filename:=TXT_Name
Filename:=C_PRG路径 & "模板"
另一种:
If MsgBox("[B1]单元内容应先设为读取的文件名, 准备好了吗", vbYesNo) = vbNo Then 'Exit Sub
XLS_Name = ("Excel文件(*.xls), *.xls")
Range("B1") = XLS_Name
Else
XLS_Name = Range("B1") '读取的文件名
End If
Filename:=XLS_Name
Workbook表名 =
总行数:
已用区域行数 = Sheets("基金取数"). '已用区域行数
已用区域列数 = Sheets("基金取数"). '已用区域行数
右下角地址 = Cells(已用区域行数, 已用区域列数).Address MsgBox Range("A1:" & 右下角地址).Address '区域地址
已用区域地址
MsgBox 0) '已用区域地址
或:
已选定区域行数 = '已选定范围的行数
[B1] = 已用区域行数
或:
最后行号 = Range("B5").End(xlDown).Row 'B列最后行号,可用,B5下方不应有空单元格最后列号 = Range("A4").End(xlToRight).Column
列名 = Columns(最后列号).Address '得出如: $N$N
最后行号 = Cells, 3).End(xlUp).Row 'C列最后行号,比较通用
相当于:
最后行号 = Range("C65536").End(xlUp).Row '最后行号,可用,V2003
获取行列坐标:
列 =
行 =
或
列 =
行 =
设置公式(填充):(关联的透视表最后列并不固定)
Sheets("透视表").Select
最后列号 = Range("A4").End(xlToRight).Column '最后列号
列名 = Columns(最后列号).Address
Sheets("金额").Select
最后行号 = Range("C4").End(xlDown).Row '最后行号
Range("E5").Select
= "=SUMIF(透视表!A:A,B:B,透视表!" & 列名 & ")" '设置公式
Destination:=Range("E5:E" & 最后行号) '填充
消除表内容:
消除内容:
把每个数字转换成9位字符,不足者前面添0, 在单元格输入公式:
=REPT(0,9-LEN(A23)) &A23
用代码简化输入(在[代码]工作表中有A列代码,B列名称)
在工作表A列输入代码后,在B列得出名称,B2单元格输入公式:
=IF(ISERROR(VLOOKUP(A2,代码!A:B,2,FALSE)),"",VLOOKUP(A2,代码!A:B,2,FALSE))冻结窗口
Range("C4").Select
= True '冻结窗口,C4起
查找包括X的单元格
(what:="X").Activate
列 =
行 =
或:
行号 = (what:="X").Row
列号 = (what:="X").Column
通过短名(简称)求长名代码
=LOOKUP(0,0*FIND(简称!$A$2:$A$112,A3),简称!$B$2:$B$112)
其中:[简称!$A$2:$A$112] 为简称,[简称!$B$2:$B$112] 为行号,A3为网点全名
============================================================================== ====================
Sub 复制表1已用区域值到表2A1(源薄名 As String, 源表名 As String, 目标薄名 As String, 目标表名 As String)
Windows(源薄名).Activate
With Sheets(源表名).UsedRange '整个已用区域,自动计算区域大小
Windows(目标薄名).Activate
Sheets(目标表名).[A1].Resize(., . = .Value
End With
End Sub
============================================================================== ====================
Sub 复制表1区域值到表2(源薄名 As String, 源表名 As String, 源区域 As String, 目标薄名 As String, 目标表名 As String, 目标左上格 As String)
'自动计算区域大小,目标区域只需定位左上角单元格
Windows(源薄名).Activate
Sheets(源表名).Select
Range(源区域).Select
With Selection '已选定区域
Windows(目标薄名).Activate
Sheets(目标表名).Range(目标左上格).Resize(., . = .Value
End With
End Sub
==============================================================================
Sub 数组方式复制整表(源路径薄名As String, 目标薄名As String, 目标表名As String) '比较快
'SUB:源薄名调用前已打开,复制后关闭复制值'
'要求: 目标区域只需定位左上角单元格
'调用: Call 数组方式复制整表(Worksheets("操作步骤").Range("G9").Value, (WorkbookName主表), "表内人民币")
Dim arr As Variant
Filename:=源路径薄名 'Worksheets("操作步骤").Range("G9").Value
源薄名 =
区域 = 0) '已用区域地址
arr = Range(区域).Value
'关闭源薄
Windows(目标薄名).Activate
Sheets(目标表名).Range(区域) = arr
End Sub
==============================================================================
Sub 数组方式复制区域值SUB(源薄名 As String, 源表名 As String, 源区域 As String, 目标薄名 As String, 目标表名 As String, 目标区域 As String)
'SUB:源薄名调用前已打开不关闭复制值'
'要求: 目标区域大小 = 源区域大小
'调用: Call 数组方式复制区域值SUB((Workbook模板20), "金融资产", "D4:AX82", (WorkbookName日报表), "金融资产", "D4:AX82")
Dim arr As Variant
Windows(源薄名).Activate
arr = Sheets(源表名).Range(源区域).Value
Windows(目标薄名).Activate
Sheets(目标表名).Range(目标区域).Value = arr
End Sub
==============================================================================
====================
Sub 数组方式复制区域值SUB2(源薄名As String, 源表名As String, 源区域As String, 目标薄名 As String, 目标表名 As String, 目标左上格 As String)
'SUB:源薄名调用前已打开不关闭复制值'
'要求: '自动计算区域大小,目标区域只需定位左上角单元格
'调用: Call 数组方式复制区域值SUB2((Workbook模板20), "金融资产", "D4:AX82", (WorkbookName日报表), "金融资产", "D4")
Dim arr As Variant
Windows(源薄名).Activate
Sheets(源表名).Select
Range(源区域).Select
区域高 = 区域宽 = = Sheets(源表名).Range(源区域).Value
Windows(目标薄名).Activate
Sheets(目标表名).Range(目标左上格).Resize(区域高, 区域宽) = arr
'MsgBox Sheets(目标表名).Range(目标左上格).Resize(区域高, 区域宽).Address
End Sub
============================================================================== ====================
Sub 复制整表SUB(源薄名 As String, 源表名 As String, 目标薄名 As String, 目标表名 As String)
' = False 'True 显示警告信息
Filename:=源薄名 'Worksheets("操作步骤").Range("G9").Value
Workbook表 =
Sheets(源表名).Select
Windows(目标薄名).Activate
Sheets(目标表名).Select
'Windows(Workbook表).Close
' = True 'False 'True 显示警告信息
End Sub
============================================================================== ==
Sub 复制区域SUB(源薄名 As String, 源表名 As String, 源区域 As String, 目标薄名As String, 目标表名 As String, 目标区域 As String)
Windows(源薄名).Activate
Sheets(源表名).Select
Range(源区域).Select
Range(Selection, (xlDown)).Select
Windows(目标薄名).Activate
Sheets(目标表名).Select
Range(目标区域).Select
Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False '复制值
End Sub
============================================================================== ==
文件是否存在
Sub TestFile()
MsgBox "下面将判断当前目录下是否存在“员工花名册.xls”工作薄文件。
"
Dim fil As String '定义变量
fil = & "\员工花名册.xls"
If Len(Dir(fil)) > 0 Then '用Dir函数判断fil指代的文件是否存在
MsgBox "工作薄已存在!"
Else
MsgBox "工作薄不存在!"
End If
End Sub
============================================================================== ==
Function 工作表是否存在(表名 As String) As Boolean '自定义函数: 工作表是否存在Dim i As Long
For i = To 1 Step -1
If Worksheets(i).Name = 表名 Then
Exit For
End If
Next
工作表是否存在 = IIf(i = 0, False, True) '如果i = 0工作表未找到
End Function
调用:
If 工作表是否存在((表名)) = False Then
(after:=Sheets("成表")).Name = 表名 '"成表"之后插入
End If
============================================================================== =======
Function 工作簿是否打开(sWkbName As String) As Boolean '自定义函数: 工作簿是否打开
'如果要判断一个指定的工作簿是否打开,可以将下面的VBA代码放入标准模块中,然后在子过程中进行调用。
'如果目标工作簿已打开则返回TRUE,否则返回FALSE
Dim i As Long
For i = To 1 Step -1
If Workbooks(i).Name = sWkbName Then
Exit For
End If
Next
工作簿是否打开 = IIf(i = 0, False, True) '如果i = 0工作簿未找到
End Function
============================================================================== ==
Sub 返回模板1()
If 工作簿是否打开("模板") = False Then
Filename:="F:\报表\日报\prg\模板" '打开表
End If
Windows("模板").Activate
End Sub
============================================================================== =======
Sub 打开或隐藏列()
Sheets("变动表").Select
Columns("V:AO").Select
= IIf > 0, 0, 12)
End Sub
=======================================================
Sub 打开或隐藏无关表()
Worksheets("过渡表").Visible = Not Worksheets("过渡表").Visible 'False 'True Worksheets("汇总单位").Visible = Not Worksheets("汇总单位").Visible 'False 'True
End Sub
=======================================================
Sub 另存并关闭()
SaveChanges:=True, Filename:=""
End Sub
=======================================================
标题行输入:
Dim myArray As Variant
Dim i As Integer
'准备数据
myArray = Array("AAA", "BBB", 200, 500, "2006-7-12")
For i = LBound(myArray) To UBound(myArray)
Cells(i + 1, 1) = myArray(i)
Next i
=======================================================
Sub 设置片区汇总公式()
'用法: 先定位"分行汇总的单元格", 再运行本宏, 即可自动设置片区汇总公式
'分行汇总在最上面,片区汇总在网点下方(片区包含若干网点)
'MsgBox
If MsgBox("设为合计汇总的单元格是:" & & " 确定吗", vbYesNo) = vbNo Then Exit Sub
列 = '自动得出
行0 = '自动得出
Dim A As Variant
'片区个数 = 14
A = Array(10, 5, 3, 3, 4, 1, 2, 3, 2, 2, 9, 6, 6, 6) '各片区包含的网点个数(行)行 = 行0
总计 = "=SUM("
For i = 0 To UBound(A) '确定数组的指定维的最大可用下标。
含 = A(i)
行 = 行 + 含 + 1
'Range(列 & 行).Select
Cells(行, 列).Select '可行
= "=SUM(R[-" & 含 & "]C:R[-1]C)"
总计 = 总计 & "R[" & 行 - 行0 & "]C,"
Next
Cells(行0, 列).Select '可行
= 总计 & ")" '总计
End Sub
========================================================= Sub 匹配简称获取行号Find()
N行数1 = Sheets("行名简称"). '行名简称
N行数2 = Sheets("操作表"). '操作表
'清除B列
Sheets("操作表").Select
Range("B2:B" & N行数2).Select
Dim W行名简称 As Worksheet
Set W行名简称 = Worksheets("行名简称") Dim W操作表 As Worksheet
Set W操作表 = Worksheets("操作表")
For i = 2 To N行数1 '行名简称
C行名简称 = Trim(W行名简称.Cells(i, 4)) C代号 = W行名简称.Cells(i, 6) '归并行号If Len(C行名简称) > 0 Then
For j = 2 To N行数2 '操作表
With W操作表.Cells(j, 1)
Set YN = .Find(C行名简称)
End With
If Not YN Is Nothing Then
W操作表.Cells(j, 2) = C代号
End If
Next j
End If
Next i
MsgBox "OK !"
End Sub
===========================================================================问题一:在VBA代码中,如何引用当前工作表中的单个单元格(例如引用单元格C3)
回答:可以使用下面列举的任一方式对当前工作表中的单元格(C3)进行引用。
(1) Range("C3")
(2) [C3]
(3) Cells(3, 3)
(4) Cells(3, "C")
(5) Range("C4").Offset(-1)
Range("D3").Offset(, -1)
Range("A1").Offset(2, 2)
(6) 若C3为当前单元格,则可使用:ActiveCell
(7) 若将C3单元格命名为“Range1”,则可使用:Range("Range1")或[Range1]
(8) Cells(4, 3).Offset(-1)
(9) Range("A1").Range("C3")
****************************************************************************** ********************
Sub 读写机构号()
'
' 宏由 gd-wenbirong 录制,时间: 2012-12-24
'
' (13180-BEPD0010) 往账清单.txt
'
'用Excel打开往账清单.txt,按空格符分列,运行这个宏,
'排序,删除无用行,透视表,关联网点名,OK
'
C机构号 = ""
For i = 1 To 1832
If Left(Cells(i, 1), 4) = "机构号:" Then
C机构号 = Mid(Cells(i, 1), 6, 5) '读
'MsgBox C机构号
End If
Cells(i, 14) = C机构号 '写
Next i
End Sub
======================================= Sub 基金透视表()
'
' Macro4 Macro
' 宏由 gd-wenbirong 录制,时间: 2012-12-4 '
'
Sheets("基金取数").Select
有效行 = Sheets("基金取数"). '已用区域行数
Range("H1") = 有效行 '通过H1单元过渡
SourceData:= _
"基金取数!R1C1:R" & Range("H1") & "C7").CreatePivotTable TableDestination:="", TableName:= _
"数据透视表1", DefaultVersion:=xlPivotTableVersion10
TableDestination:=(3, 1)
(3, 1).Select
= True
With ("数据透视表1").PivotFields("资金账户开户机构")
.Orientation = xlRowField
.Position = 1
End With
With ("数据透视表1").PivotFields("基金类型")
.Orientation = xlColumnField
.Position = 1
End With
("数据透视表1").AddDataField ("数据透视表1" _
).PivotFields("余额(份数)"), "求和项:余额(份数)", xlSum ("PivotTable").Visible = False
= False
Sheet透视表名 =
'copy to "基金透视表"
Sheets("基金透视表").Select
Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
有效行 = Sheets("基金透视表"). '已用区域行数
Range("Q4") = 有效行 '通过P4单元过渡
Range("Q5").Select
= "=RC[-1]-RC[-4]-RC[-3]" '减去: -M列(12 中银理财) -N列(13 信托) Destination:=Range("Q5:Q" & Range("Q4"))
'Range("Q5:P" & Range("Q4")).Select
Range("Q4") = "纯基金" '增加列
Sheets(Sheet透视表名).Select
= False 'True 显示警告信息
= True 'True 显示警告信息
' = False
Sheets("基金透视表").Select
End Sub
===========================================================================
Sub test运行时间()
= False '是否显示屏幕变化
xls1 = "模板"
xls2 = "模板"
tim = Timer
For i = 1 To 100
Call 复制表1区域值到表2((xls2), "金融资产", "D4:AX82", (xls1), "金融资产", "D4") 'test 可用
Next
MsgBox Format(Timer - tim, "") & "秒"
tim = Timer
For i = 1 To 100
Call 数组方式复制区域值SUB((xls2), "金融资产", "D4:AX82", (xls1), "金融资产", "D4:AX82") 'test 较快
Next
MsgBox Format(Timer - tim, "") & "秒"
= True
End Sub
VBA经典常用语句400句(一)
定制模块行为
(1) Option Explicit '强制对模块内所有变量进行声明
Option Private Module '标记模块为私有,仅对同一工程中其它模块有用,在宏对话框中不显示
Option Compare Text '字符串不区分大小写
Option Base 1 '指定数组的第一个下标为1
(2) On Error Resume Next '忽略错误继续执行VBA代码,避免出现错误消息
(3) On Error GoTo ErrorHandler '当错误发生时跳转到过程中的某个位置
(4) On Error GoTo 0 '恢复正常的错误提示
(5) =False '在程序执行过程中使出现的警告框不显示
(6) =False '关闭屏幕刷新
=True '打开屏幕刷新
(7) '禁用Ctrl+Break中止宏运行的功能
工作簿
(8) () '创建一个新的工作簿
(9) Workbooks(“”).Activate '激活名为book1的工作簿
(10) '保存工作簿
(11) '关闭当前工作簿
(12) '获取活动工作薄中工作表数
(13) '返回活动工作薄的名称
(14) ‘返回当前工作簿名称
‘返回当前工作簿路径和名称
(15) =False ‘禁止调整活动工作簿的大小
(16) xlArrangeStyleTiled ‘将工作簿以平铺方式排列
(17) =xlMaximized ‘将当前工作簿最大化
工作表
(18) ‘当前工作表中已使用的行数
(19) ‘获取工作表的行数(注:考虑向前兼容性)
(20) Sheets(Sheet1).Name= “Sum” '将Sheet1命名为Sum
(21) Before:=Worksheets(1) '添加一个新工作表在第一工作表前
(22) After:=ActiveWorkbook. _
Sheets '将当前工作表移至工作表的最后
(23) Worksheets(Ar ray(“sheet1”,”sheet2”)).Select '同时选择工作表1和工作表2
(24) Sheets(“sheet1”).Delete或 Sheets(1).Delete '删除工作表1
(25) (i).Name '获取工作表i的名称
(26) =Not '切换工作表中的网格线显示,这种方法也可以用在其它方面进行相互切换,即相当于开关按钮
(27) =Not ‘切换工作表中的行列边框显示
(28) ‘删除当前工作表中所有的条件格式
(29) ‘取消当前工作表所有超链接
(30) 或 '将页面设置更改为横向
(31) ‘在页面设置的表尾中输入文件路径
‘将用户名放置在活动工作表的页脚
单元格/单元格区域
(32) 或Range(xlUp),(xlDown)).Select
'选择当前活动单元格所包含的范围,上下左右无空行
(33) ‘选定当前工作表的所有单元格
(34) Range(“A1”).ClearContents '清除活动工作表上单元格A1中的内容
'清除选定区域内容
Range(“A1:D4”).Clear '彻底清除A1至D4单元格区域的内容,包括格式
(35) '清除工作表中所有单元格的内容
(36) (1,0).Select '活动单元格下移一行,同理,可下移一列
(37) Range(“A1”).Offset(ColumnOffset:=1)或Range(“A1”).Offset(,1) ‘偏移一列
Range(“A1”).Offset(Rowoffset:=-1)或Range(“A1”).Offset(-1) ‘向上偏移一行(38) Range(“A1”).Copy Range(“B1”) '复制单元格A1,粘贴到单元格B1中
Range(“A1:D8”).Copy Range(“F1”) '将单元格区域复制到单元格F1开始的区域中Range(“A1:D8”).Cut Range(“F1”) '剪切单元格区域A1至D8,复制到单元格F1开始的区域中
Range(“A1”). Sheets(“Sheet2”).Range(“A1”) '复制包含A1的单元格区域到工作表2中以A1起始的单元格区域中
注:CurrentRegion属性等价于定位命令,由一个矩形单元格块组成,周围是一个或多个空行或列
本示例选定工作表 Sheet1 上的当前区域。
Worksheets("Sheet1").Activate
本示例假定在工作表 Sheet1 中有一个包含标题行的表。
本示例选定该表,但不选定标题行。
运行本示例之前,活动单元格必须处于该表中。
Set tbl =
(1, 0).Resize - 1, _
'将值XX输入到所选单元格区域中
(40) '活动窗口中选择的单元格数
(41) '当前选中区域的单元格数
(42) GetAddress=Replace(1).Address,mailto:,””) ‘返回单元格中超级链接的地址并赋值
(43) TextColor=Range(“A1”). ‘检查单元格A1的文本颜色并返回颜色索引
Range(“A1”). ‘获取单元格A1背景色
(44) ‘返回当前工作表的单元格数
(45) (“E4”).Select ‘激活当前活动单元格下方3行,向右4列的单元格
(46) (5,”C”) ‘引单元格C5
(5,3) ‘引单元格C5
(47) Range(“A1”).Offset(RowOffset:=4,ColumnOffset:=5)
或Range(“A1”).Offset(4,5) ‘指定单元格F5
(48) Range(“B3”).Resize(RowSize:=11,ColumnSize:=3)
Rnage(“B3”).Resize(11,3) ‘创建B3:D13区域
(49) Range(“Data”).Resize(,2) ‘将Data区域扩充2列
(50) Union(Range(“Data1”),Range(“Data2”)) ‘将Data1和Data2区域连接
(51) Intersect(Range(“Data1”),Range(“Data2”)) ‘返回Data1和Data2区域的交叉区域
(52) Range(“Data”).Count ‘单元格区域Data中的单元格数
Range(“Data”). ‘单元格区域Data中的列数
Range(“Data”). ‘单元格区域Data中的行数
(53) ‘当前选中的单元格区域中的列数
‘当前选中的单元格区域中的行数
(54) ‘选中的单元格区域所包含的区域数
(55) ‘获取单元格区域中使用的第一行的行号
(56) ‘获取单元格区域Rng左上角单元格所在列编号
(57) ‘在活动工作表中返回所有符合条件格式设置的区域
(58) Range(“A1”).AutoFilter Field:=3,VisibleDropDown:=False ‘关闭由于执行自动筛选命令产生的第3个字段的下拉列表名称
(59) Range(“A1:C3”).Name=“computer” ‘命名A1:C3区域为computer
或Range(“D1:E6”).Name=“Sheet1!book” ‘命名局部变量,即Sheet1上区域D1:E6为book
或 Nam es(“computer”).Name=“robot” ‘将区域computer重命名为robot
(60) Names(“book”).Delete ‘删除名称
(61) Name:=“ContentList”,_
RefersTo:=“=OFFSET(Sheet1!A2,0,0,COUNTA(Sheet2!$A:$A))” ‘动态命名列
(62) Name:=“Company”,RefersTo:=“CompanyCar” ‘命名字符串CompanyCar
(63) Name:=“Total”,RefersTo:=123456 ‘将数字123456命名为Total。
注意数字不
能加引号,否则就是命名字符串了。
(64) Name:=“MyArray”,RefersTo:=ArrayNum ‘将数组ArrayNum命名为MyArray。
(65) Name:=“ProduceNum”,RefersTo:=“=$B$1”,Visible:=False ‘将名称隐藏
(66) (“Com”).Name ‘返回名称字符串
公式与函数
(67) '使用工作表函数检查A1单元格中的数据是否为数字
(68) Range(“A:A”).Find 激活单元格区域A列中最大值的单元格
(69) Cells(8,8).FormulaArray=“=SUM(R2C[-1]:R[-1]C[-1]*R2C:R[-1]C)” ‘在单元格中输入数组公式。
注意必须使用R1C1样式的表达式
图表
(70) '获取当前工作表中图表的个数
(71) (“Chart1”).Select ‘选中当前工作表中图表Chart1
(72) (“Chart1”).Activate
‘选中当前图表区域
(73) WorkSheets(“Sheet1”).ChartObjects(“Chart2”).Chart. _
‘更改工作表中图表的图表区的颜色
(74) Sheets(“Chart2”). ‘更改图表工作表中图表区的颜色
(75) ‘添加新的图表工作表
(76) Source:=Sheets(“Sheet1”).Range(“A1:D5”), _
PlotBy:=xlColumns ‘指定图表数据源并按列排列
(77) Where:=xlLocationAsNewSheet ‘新图表作为新图表工作表
(78) ‘将绘图区颜色变为白色
(79) WorkSheets(“Sheet1”).ChartObjects(1).Chart. _
Export FileName:=“C:”,FilterName:=“GIF” ‘将图表1导出到C盘上并命名为
窗体
(80) MsgBox “Hello!” '消息框中显示消息Hello
(81) Ans=MsgBox(“Continue”,vbYesNo) '在消息框中点击“是”按钮,则Ans值为vbYes;点击“否”按钮,则Ans值为vbNo。
If MsgBox(“Continue”,vbY esNo)<>vbYes Then Exit Sub '返回值不为“是”,则退
出
(82) Config=vbYesNo+vbQuestion+vbDefaultButton2 '使用常量的组合,赋值组Config
变量,并设置第二个按钮为缺省按钮
(83) MsgBox “This is the first line.” & vbNewLine & “Second line.” '在消息
框中强制换行,可用vbCrLf代替vbNewLine。
(84) MsgBox "the average is :"&Format"#,##") vbInformation,"selection
count average" & Chr(13) '应用工作表函数返回所选区域的平均值并按指定格式显示
(85) ‘显示用户窗体
(86) Load Userform1 ‘加载一个用户窗体,但该窗体处于隐藏状态
(87) ‘隐藏用户窗体
(88) Unload Userform1 或Unload Me ‘卸载用户窗体
(89) (图像控件).Picture=LoadPicture(“图像路径”) ‘在用户窗体中显示图形
(90) 0 或vbModeless ‘将窗体设置为无模式状态
(91) =Int* ‘窗体高度为当前活动窗口高度的
=Int* ‘窗体宽度为当前活动窗口高度的
事件
(92) =False '禁用所有事件
=True '启用所有事件
注:不适用于用户窗体控件触发的事件
对象
(93) Set ExcelSheet = CreateObject("") ‘创建一个Excel工作表对象
= True '设置 Application 对象使 Excel 可见
1).Value = "Data" '在表格的第一个单元中输入文本
"C:\" '将该表格保存到C:\ 目录
'关闭 Excel
Set ExcelSheet = Nothing '释放该对象变量
(94) ‘声明并创建一个Excel对象引用
Dim xlApp As
Dim xlBook As
Dim xlSheet As
Set xlApp = CreateObject("")
Set xlBook = xlSheet = (1)
(95) ‘创建并传递一个对象的引用
Call MySub (CreateObject(""))
(96) Set d = CreateObject ‘创建一个 Dictionary 对象变量
(97) "a", "Athens" '为对象变量添加关键字和条目
其他
(98) “^I”,”macro” '设置Ctrl+I键为macro过程的快捷键
(99) =False ‘退出剪切/复制模式
(100) True '无论何时工作表中任意单元格重新计算,都会强制计算该函数 False '只有在该函数的一个或多个参数发生改变时,才会重新计算该函数定制模块行为
(101) ‘清除程序运行过程中所有的错误
*******************************************************
工作簿
(102) (“Last Save Time”)
或Save Time”) ‘返回上次保存工作簿的日期和时间
(103) ("Last Print Date")
或Print Date”) ‘返回上次打印或预览工作簿的日期和时间
(104) ‘关闭所有打开的工作簿
(105) (xlExcelLinks)(1) ‘返回当前工作簿中的第一条链接
(106)
‘返回工作簿代码的名称
(107)
‘返回当前工作簿文件格式代码
(108)
‘返回当前工作簿的路径(注:若工作簿未保存,则为空)
(109)
‘返回当前工作簿的读/写值(为False)
(110)
‘返回工作簿的存储值(若已保存则为False)
(111) = False ‘隐藏工作簿
= True ‘显示工作簿
注:可与用户窗体配合使用,即在打开工作簿时将工作簿隐藏,只显示用户窗体.可设置控制按钮控制工作簿可见
*******************************************************
工作表
(112) ("B").Insert ‘在A列右侧插入列,即插入B列
("E").Cut
("B").Insert‘以上两句将E列数据移至B列,原B列及以后的数据相应后移("B").Cut
("E").Insert ‘以上两句将B列数据移至D列,原C列和D列数据相应左移一列(113) ‘计算当前工作表
(114) (“sheet1”).Visible=xlSheetHidden ‘正常隐藏工作表,同在Excel菜单中选择“格式——工作表——隐藏”操作一样
(“sheet1”).Visible=xlSheetVeryHidden ‘隐藏工作表,不能通过在Excel菜单中选择“格式——工作表——取消隐藏”来重新显示工作表
(“sheet1”).Visible=xlSheetVisible ‘显示被隐藏的工作表
(115) (1).ProtectContents ‘检查工作表是否受到保护
(116) Count:=2, _
Before:=(2)
或(2), , 2‘在第二个工作表之前添加两个新的工作表
(117) (3).Copy ‘复制一个工作表到新的工作簿
(118) (3).Copy (2) ‘复制第三个工作表到第二个工作表之前
(119) = 20 ‘改变工作表的列宽为20
= _
‘将工作表的列宽恢复为标准值
= 20 ‘改变工作表列1的宽度为20
(120) = 10 ‘改变工作表的行高为10
= _
‘将工作表的行高恢复为标准值
= 10 ‘改变工作表的行1的高度值设置为10
(121) (1).Activate ‘当前工作簿中的第一个工作表被激活
(122) ("Sheet1").Rows(1). = Tr ue ‘设置工作表Sheet1中的行1数据为粗体
(123) ("Sheet1").Rows(1).Hidden = True ‘将工作表Sheet1中的行1隐藏
= True ‘将当前工作表中活动单元格所在的行隐藏
注:同样可用于列。
(124) (“A:A”). ‘自动调整当前工作表A列列宽
(125) ‘选中当前工作表中常量和文本单元格
‘选中当前工作表中常量和文本及错误值单元格
*******************************************************
公式与函数
(126) Macro:=”SumPro”,Category:=4 ‘将自定义的SumPro函数指定给Excel中的“统计函数”类别
(127) Macro:=”SumPro”, _
Description:=”First Sum,then Product” ‘为自定义函数SumPro进行了功能说明(128) ‘获取A列的下一个空单元格
(129) ‘返回该单元格所在列非空单元格的数量
‘返回该单元格所在行非空单元格的数量
(130) (Cells) ‘返回工作表中非空单元格数量
(131) (“A20:D20”).Formula=“=Sum(R[-19]C:R[-1]C”’对A列至D列前19个数值求和
*******************************************************
图表
(132) =False
或‘使图表处于非活动状态
(133) TypeName(Selection)=”Chart” ‘若选中的为图表,则该语句为真,否则为假(134) ‘删除工作表上所有的ChartObject对象
‘删除当前工作簿中所有的图表工作表
*******************************************************
窗体和控件
(135) (MyForm).Show ‘添加用户窗体MyForm并显示
(136) ‘设置文本框获取输入焦点
(137) =0 ‘将数值调节钮控件的值改为0
(138) = ‘将数值调节钮控件的值赋值给文本框控件
="/Val" ‘将文本框控件值赋给数值调节钮控件
CStr= ‘数值调节钮控件和文本框控件相比较
(139) ‘显示窗体UserForm1上的控件数目
(140) “Command1” ‘在列表框中添加Command1
(141) ‘返回列表框中条目的值,若为-1,则表明未选中任何列表框中的条目
(142) ‘返回代表单元格区域地址的文本字符串
= ‘初始化RefEdit控件显示当前所选单元格区域
Set FirstCell=Range.Range(“A1”) ‘设置某单元格区域左上角单元格
(143) Now + TimeValue("00:00:15"), "myProcedure" ‘等待15秒后运行myProcedure 过程
(144) = ‘将滚动条控件的值赋值给ActiveWindow对象的ScrollColumn属性
= ‘将滚动条控件的值赋值给ActiveWindow对象的ScrollRow属性
(145) Sheets(“Sheet1”).Cells(1,1) ‘将单元格A1中的数据添加到列表框中
=Product ‘将一个名为Product数组的值添加到ListBox1中
=”Sheet2!SumP” ‘使用工作表Sheet2中的SumP区域的值填充列表框
(146) (0) ‘选中列表框中的第一个条目(注:当列表框允许一次选中多个条目时,必须使用Selected属性)
(147) ‘移除列表框中选中的条目
*******************************************************
对象
Application对象
(148) ‘返回应用程序的用户名
(149) ‘返回代表调用函数的单元格
(150) ‘返回调用函数的工作簿名称
(151) =”请等待……” ‘将文本写到状态栏
=”请等待……” & Percent & “% Completed” ‘更新状态栏文本,以变量Percent代表完成的百分比
=F alse ‘将状态栏重新设置成正常状态
(152) Reference:=Range(“A1:D4”) ‘指定单元格区域A1至D4,等同于选择“编辑——定位”,指定单元格区域为A1至D4,不会出现“定位”对话框
(153) (xlDialogFormulaGoto).Show ‘显示“定位”对话框,但定位条件按钮无效(154) (xlDialogSelectSpecial).Show ‘显示“定位条件”对话框
(155) (xlDialogFormatNumber).show ‘显示“单元格格式”中的“数字”选项卡(xlDialogAlignment).show ‘显示“单元格格式”中的“对齐”选项卡(xlDialogFontProperties).show ‘显示“单元格格式”中的“字体”选项卡(xlDialogBorder).show ‘显示“单元格格式”中的“边框”选项卡(xlDialogPatterns).show ‘显示“单元格格式”中的“图案”选项卡(xlDialogCellProtection).show ‘显示“单元格格式”中的“保护”选项卡
注:无法一次显示带选项卡的“单元格格式”对话框,只能一次显示一个选项卡。
(156) (xlDialogFormulaGoto).show Range("b2"), True ‘显示“引用位置”的默认单元格区域并显示引用使其出现在窗口左上角(注:内置对话框参数的使用)
(157) (1).Controls(2).Controls(16).Execute ‘执行“定位”话框,相当于选择菜单“编辑——定位”命令
(158) (Array(“Sun”,”Mon”,”Tur”,”Wed”,”Thu”,”Fri”,”Sat”)) ‘返回一个垂直的数组
(159) ‘返回使用的Excel版本号
(160) = xlNorthwestArrow ‘设置光标形状为北西向箭头。