VBA常用代码解析Word文件下载.docx
- 文档编号:17757140
- 上传时间:2022-12-09
- 格式:DOCX
- 页数:21
- 大小:27.55KB
VBA常用代码解析Word文件下载.docx
《VBA常用代码解析Word文件下载.docx》由会员分享,可在线阅读,更多相关《VBA常用代码解析Word文件下载.docx(21页珍藏版)》请在冰豆网上搜索。
Cell过程使用Fot…Next语句为工作表中的Al:
A100单元格区域填入序号。
Cells属性指定单元格区域中的单元格,语法如下:
Cells(RowIiidex,Colunuiliidex)
参数Rowhidex是可选的,表示引用区域中的行序号。
参数Colunmlndex是可选的,表示引用区域中的列序号。
如果缺省参数,Cells属性返回引用对象的所有单元格。
Cells属性的参数可以使用变量,因此经常应用于在单元格区域中循坏。
001-3使用快捷记号
在VBA中可以将A1引用样式或命名区域名称使用方括号括起来,作为Range属性的快捷方式,这样就不必键入单词"
Range"
或使用引号,如下面的代码所示。
SubFastinark()
[Al:
A习=2
[Fast]=4
Fastmark过程使用快捷记号为单元格区域赋值。
第2行代码使用快捷记号将活动工作表中的Al:
A5单元格赋值为2o
第3行代码将工作簿中己命名为“Fast”的单元格区域赋值为4。
注意使用快捷记号引用单元格区域时只能使用固定字符串而不能使用变量。
001-4使用Offset属性
可攻枝用Range对彖的Offset属性返回一个基于引用的Range对彖的单元格区域,如下面的代码所示。
SubOffsetQ
Sheet3.Range(,rAl:
C3,r).Offset(3,3).Select
Offset过程使用Range对彖的Offset属性选中Al:
A3单元格偏移三行三列后的区域。
应用于Range对彖的Offs战属性的语法如下:
expiession.Offset(RowOffset»
ColuninOffset)
参数expression是必需的,该表达式返回一个Range对象。
参数RowOffset是可选的,区域偏移的行数(正值、负值或0(零))。
正值表示向下偏移,负值表示向上偏移,默认值为0o
参数CohmiiiOffset是可选的,区域偏移的列数(正值、负值或0(零))。
正值表示向右偏移,负值表示向左偏移,默认值为0。
运行Offset过程,选中Al:
A3单元格偏称三行三列后的区域。
001-5使用Resize属性
使用Range对彖的Resize属性调整指定区域的人小,并返回调整人小后的单元格区域,如下面的代码所示。
SubResizeQ
Sheet4.Range(nAr'
).Resize(3,3).Select
Resize过程使用Range对彖的Resize属性选中Al单元格扩展为三行三列后的区域。
Resize属性的语法如下:
expression.Resize(RowSize,ColunmSize)
参数expression是必需的,返回要调整R小的Range对彖
参数RowSize是可选的,新区域中的行数。
如果省略该参数,则该区域中的行数保持不变。
参数ColunmSize是可选的,新区域中的列数。
如果省略该参数。
则该区域中的列数保持不变。
运行Resize过程,选中A1单元格扩展为三行三列后的区域。
001-6使用Union方法
使用Union方法可以将多个非连续区域连接起来成为一个区域,从而可以实现对多个非连续区域一起进行操作,如下面的代码所示。
SubUnSelectQ
Union(Sheet5.Range(HA1:
D4H),Sheet5.Raiige(HE5:
H8H)).Select
UnSelect过程选择单元格A1:
D4和E5:
H8所组成的区SoUnion方法返回两个或多个区域的合并区域,语法如下:
expiession.Union(Aig1,Aig2,…)
其中参数expression是of选的,逍回一个Application对象。
参数AigbAig2,...是必需至少指定两个Rang亡对象。
运行UnSelect过程,选中单元格A1:
H8所组成的区域。
001-7使用UsedRange属性
使用UsedRcmg亡属性返回指定工作表上己使用单元格组成的区域,如下面的代码所示。
SubUseSelectQ
UseSelect过程使用UsedRange属性选择工作表上己使用单元格组成的区域,包括•空单元格。
如工作表中己使用A1单元格和D8单元格,运行UseSelect程将选择A1到D8单元格区域。
001-8使用CurrentRegion属性
使用CurrentRegion属性返回指定工作表上当前的区域,如下面的代码所示。
SubCurrentSelectQSheet7.Range(nA5n).CunentRegion.Select
CurientSelectit程使用CinreiHRegum属性选择工作表上A5单元格当前的区域,当前区域是一个边缘是任意空行和空列组合成的范闱。
运行CurientSelect过程将选择A5到B6单元格区域。
▲002选定单元格区域的方法
002-1使用Select
在VEA中一般使用Select方法选定单元格或单元格区域,如下面的代码所示。
Sheet3.Activate
Sheet3.Range(nAl:
Select
RiigSelect过程使用Select方法选定Sheet3中的Al:
B10单元格区域,Select方法应用于Range对彖时语法如下:
expression.Select(Replace)
参数expression是必需的,一个有效的对彖。
参数Replace是可选的,要替换的对象。
使用Select方法选定单元格时,单元格所在的工作表必需为活动工作表,所以先使用Activate方法使Shzt3成为活动工作表,否则Select方法有可能出错,显示错误提示。
002-2使用Activate方法
还可以使用Activate方法选定单元格或单元格区域,如下面的代码所示。
SubRngActivateQ
Sheet3.Range(nA1:
B10H).Activate
一
RiigActivate过程使用Activate方法选定Sheet3中的Al:
B10单元格区域,Activate方法应用于Range对彖时语法如下:
expiession.Activate
使用Activate方法选定单元格时,单元格所在的工作表也必需为活动工作表,否则Activate方法有可能出错,显示错误提示。
002-3使用Goto方法
使用Goto方法无需使单元格所在的工作表成为活动工作表,如下面的代码所示。
SubRngGotoQ
Application.GotoReference:
=Sheet3.Range(MAl:
E10”),scro止=Tme
RiigGoto过程使用Goto方法选定Sheet3中的Al:
B10单元格区域,并滚动工作表以显示该单元格。
Goto方法选定任意工作簿中的任意区域或任意VisualBasic过程,并且如果该工作簿未处于活动状态,就激活该工作簿,语法如下:
expiession.Goto(Reference,Scroll)
参数expression是必需的,返回一个Application对彖。
参数Reference是可选的,Variant类型,指定目标。
可以是Rang亡对象、包含R1C1-样式记号的单元格引用的字符串或包含VisualBasic过程名的字符串。
如果省略本参数,目标将是最近一次用Goto方法选定的区域。
参数Scroll是可选的,Vacant类型,如果该值为True,则滚动窗II直至目标区域的左上角单元格出现在窗「I的左上角。
如果该值为False,则不滚动窗II。
默认值为Falseo
▲003获得指定行、列中的最后一个非空单元格
使用VBA对工作表进行操作时,经常需要定位到指定行或列中最后一个非空单元格,此时可以使用Range对象的End属性,在取得单元格对象后便能获得该单元格的相关属性,如单元格地址、行列号、数值等,如下面的代码所示。
SubLastRowQ
DunrngAsRange
Setrng=Sheet!
.Range(,,A65536H).End(xlUp)
MsgBoxHA歹ij中最后一个非空单元格是"
&
mg.Address(0,0)_〜&
”,行号”&
rng.Row&
”,数值”&
rng.Value
Setrng=Nothing
LastRow过程使用消息框显示工作表中A列最后非空单元格的地址、行号和数值。
End属性返回一个Range对彖,该对象代表包含源区域的区域尾端的单元格。
等同于按键<End+向上键〉、<End+向下键〉、<End+向左键>或<£
诃+向右键〉,语法如下:
expression.End(Duection)
参数Direction是可选的,所要移动的方向,可以为XlDirection常量之一。
Range对彖的End属性返回的是一个Range对彖,因此可以直接使用该对彖的属性和方法。
通过修改相应的参数,能够获得指定行中最后一个非空单元格,如下面的代码所示。
SubLastColunui()
Setrng=Sheet1.Range(HIV1n).End(xlToLeft)
MsgBox”第一行中爆启一个非空卒元格是”&
rng.Address(O,0)_
”,列号”&
rng.Colunm&
S数值”&
rng.ValueSetrng=Nothing
LastColunm过程使用消息框显示工作表中第一行最后一个非空单元格的地址、列号和数值。
▲004定位单元格
在Excel中使用定仅对话框可暑中工作表中特定的单元格区域,而在VBA中则使用SpecialCells方法,如下面的代码所示。
SubSpecialAddiess()
Setrng=
rng.Select
MsgBox”工作表中有公式的单元格为:
”&
rng.AddressSetrng=Nothing
SpecialAddress过程使用SpecialCells方法选中工作表中有公式的单元格,并用消息框显示其地址。
SpecialCells方法返回一个Range对象,该对象代表与指定类型及值相匹配的所有单元格,语法如下:
expression.SpecialCells(Tvpe,Value)
参数expression是必需的,返回一个有效的对彖。
参数Type是必需的,要包含的单元格,可为表格所列的XlCellType常量之一。
第3行代码将SpecialCells方法的Type参数设置为xlCellTypeFonnulas,返回的是含有公式的单元格,通过修改相应的参数可以返回不同的单元格。
参数Value是町选的,如果Type参数为xlCellTypeConstants或xlCellTypeFonnulas,此参数可用于确定结果中应包含哪几类单元格。
将某几个值相加可使此方法返回多种类型的单元格。
如果省略将选定所有常量或公式,可为表格所列的XISpecialCellsValue常量之一。
第5行代码使用消息框显示工作表中含有公式单元格的地址。
SpecmlCells方法返回的是Rang亡对彖,因此可以直接使用该对彖的属性和方法。
▲005査找单元格005-1使用Find方法
在Excel中使用查找对话框可以查找工作表中特定内容的单元格,而在VBA中则使用Find方法,如下面的代码所示。
SubRngFmdQ
DunStrFmdAsStiiiig
DimRiigAsRange
StrFmd=InputEoxC请输入要查找的值鋼
IfTrmi(SuFmd)<>““ThenWithSheet1.Range(MA:
AM)
SetRiig=.Find(What:
=StrFmd,_
After:
=.Cells(.Cells.Count),_
Lookhi:
=xlValues,_
LookAt:
=xlWhole,_
SeaichOrder:
=xlByRows»
_SeaicliDirection:
=xlNext>
_MatchCase:
=False)
IfNotRngIsNothingThenApplication.GotoRng,Tine
Else
MsgBox”没有找到该单元格!
”
EndIf
EndWith
RiigFind过程使用Fmd方法在工作表Sheet1的A列中查找IiiputBox函数对■话框中所输入的值,并查找该值所在的第一个单元格。
第6到第13行代码在工作表Sheetl的A列中查找IiiputBox函数对话框中所输入的值。
应用于Rang亡对象的Find方法在区域中查找特定信息,并返回Rang亡对象,该对彖代表用于查找信息的第一个单元格。
如果未发现匹配单元格,就返回Nothing,语法如下:
expression.Fmd(What,After,Lookin,LookAt,SeaichOider,SeaiciiDirection,MatchCase,MatchByte,SeicliFonnat)
参薮expression是必需的»
该表达式返回一个Range对象。
参数What是必需的,要搜索的数据,可为字符串或任意数据类型。
参数Aftei是可选的,表示搜索过程将从其之后开始进行的单元格,必须是区域中的单个单元格。
查找时是从该单元格之后开始的,直到本方法绕回到指定的单元格时,才对其进行搜索。
如果未指定本参数,搜索将从区域的左上角单元格之后开始。
在本例中将Aft賈参数设置为A列的最后一个单元格,所以查找时从A1单元格开始搜z参数Lookhi是可选的,信息类型。
参数LookAt是可选的,可为XILookAt常量的xlWhole或xlPait之一。
参数SearchOrdei是口J选的»
可为XlSeaichOrder常量的xlByRows或xlByColuniiis之一。
参数SeaicliDirection是可选的,搜索的方向,可为XlSearchDuection常量的xlNext或xlPrevious之一。
参数MatchCase是可选的,若为True,则进行区分人小写的查找。
默认值为Falseo参数MatchByte是可选的,仅在选择或安装了双字节语言支持时使用。
若为True,则双字节字符仅匹配双字节字符。
若为False,则双字节字符可匹配其等价的单字节字符。
参数SercliFonnat是町选的,搜索的格式。
每次使用Find方法后,参数Lookin、LookAt、SearchOrder和MatchByte的设置将保存。
如果下次调用Fmd方法时不指定这些参数的值,就使用保存的值。
因此每次使用该方法时请明确设置这些参数。
如果工作表的A列中存在重复的数值,那么需要使用FindNext方法或FindPrevious方法进行重复搜索,如下面的代码所示。
SubRngFmdNextQ
DimStrFmdAsStiiiig
DimFindAddiessAsStiiiig
IfTrmi(SuFmd)<
>
““Then
WithSheet1.Range(MA:
=StrFmd,_After:
=.Cells(.Cells.Count),_Looklii:
=xlValuest_LookAt:
=xlWhole,_SeaichOrder:
IfNotRngIsNothingThen
FmdAddiess=Riig.Address
Do
SetRiig=.FmdNext(Riig)
LoopWhileNotRiigIsNothmgAiidRiig.AddressoFmdAddressEndIf
RiigFindNext过程在工作表Sheet1的A列中查找IiiputBox函数对话框中所输入的值,并将查到单元格底色设置成黄色。
第8行到第17行代码使用Find方法在工作表Sheetl的A列中查找。
第16行代码将查找到的第一个单元格地址赋给字符串变量FmdAddresSo
第18行代码将查找到的单元格底色设置成黄色。
翕19行祀础祓用FmdNext方法遵行董复搜索。
FmdNext方法继续执行用Fmd方法启动的搜索。
查找下一个匹配相同条件的单元格并返回代表单元格的Range对象,语法如下:
expression.FmdNext(After)参数expression是必需的,返回一个Range对彖。
参数After是可选的,指定一个单元格,查找将从该单元格之后开始。
第20行代码如果查找到的单元格地址等于字符串变量FmdAddress所记录的地址,说明A列己搜索完毕,结束查找过程。
运行RiigFmdNext过程,在IiiputBox函数输入框中输入“196.01”后结果如所示。
还可以使用FindPrevious方法进行重复j叟索,FindPrevious方法的语法如下:
expiession.FmdPrevious(After)
FindPrevious方法和FmdNext方法唯一的区别是FmdPrevious方法查找匹配相同条件的前一个单元格而FmdNext方法是查找匹配相同条件的下一个单元格。
005-2使用Like运算符
使用Lik亡运算符可以进行更为复杂的模式匹配查找,如下面的代码所示。
SubRngLikeQ
DimrngAsRange
DunaAsInteger
a=1
WitliSheet2
・Range(nA:
An).CleaiContents
ForEachrngIn・Range(HBl:
E1000M)
Ifrng.TextLiken*a*HThen.Raiige(MAH&
a)=rng.Texta=a+1
EndWitli
RngLik亡过程使用ForEach...Next语句和Like运算符在单元格区域B1:
E10000中搜索含有字符的单元格,找到匹配单元格以后将单元格的值写入到A列中。
第6行代码使用ClearContents方法清除A列区域的数据。
第7行代码使用ForEach...Next语句在单元格区域Bl:
E10000中循坏。
第8行代码使用Like运算符在单元格区域Bl:
E10000中搜索含有“a”字符的单元格。
口心运算符用来比较两个字符串,语法如下:
result=stringLikepattern
参数strmg是必需的,字符串表达式。
参薮pattem是必需Mj,字符串衣达衣。
如果stiing与patt亡m匹配,则result为Tn©
如果不匹配,则result为False。
但是如果suing或pattern中有一个为Null,则result为Null。
参数pattern可以使用通配符、字符串列表或字符区间的任何组合来匹配字符串。
表格中列岀pattern中允许的字符以及它们与什么进行匹配。
第9行代码将找到的匹配单元格的值写入到A列中。
▲006替换单元格内字符串
如果需要替换单元格内指定的字符串,那么使用Range对象的Replace方法,如下面的代码所示。
SubRngReplaceQ
Raiige(HAl:
A5H).Replace”通州”,”南通,
RngReplac亡过程将工作表Al:
A5单元格中的“通州”字符串替换成“南通”字符串。
应用于Range对彖的Replace方法替换指定囱域I右童元格中的字冰语法如下:
expression.Replace(What,ReplacementsLookAt,SeaichOidertMatchCase,MatcliBvte,SearchForniat,ReplaceFormat)
其中参数expression是必需的,返回一个Range对象。
参数What是必需的,要搜索的字符串。
参数Replacement是必需的,替换的字符串。
运行RiigReplace过程前工
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VBA 常用 代码 解析