Excel VBA End With结构,专为对象而生
发布时间:2023-06-20 00:30:02
我们主要是和对象打交道,这包括各种各样的对象以及由这些对象组成的集合对象。我们来看看并学习Excel内部是如何处理对象的。
我们先来录制一个宏。
在Excel中,打开宏录制器,录制下面的操作:在工作表单元格A1中输入“Excel”,设置其字体为红色,单元格背景色为黄色。录制的代码如下:
Sub 宏3()
‘
‘ 宏3 宏
‘
‘
ActiveCell.FormulaR1C1 = “Excel”
Range(“A1”).Select
With Selection.Font
.Color = -16776961
.TintAndShade = 0
End With
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 65535
.TintAndShade = 0
.PatternTintAndShade = 0
End With
End Sub
观察代码,我们发现,宏录制器为设置字体和单元格背景的两段代码都使用了With … End With结构,这就是VBA为我们提供的处理对象的有效方法之一。
在这里,宏录制器自动优化了代码,在With … End With结构中对同一个对象执行多项操作。当需要对某个对象执行多项操作时(例如,为同一对象的多个属性赋值),使用With … End With结构的代码比在每个语句中都显示地引用对象的代码要更快。
在上一篇文章《Excel VBA解读(17):谈谈对象变量》中,我们展示了一个示例:在单元格区域A1:B2中输入文本“示例”,将字体加粗,字号大小调整为19号,并将单元格背景设置为黄色。
代码1:不使用对象变量
Sub test()
Worksheets(“Sheet1”).Range(“A1:B2”).Value= “示例”
Worksheets(“Sheet1”).Range(“A1:B2”).Font.Bold = True
Worksheets(“Sheet1”).Range(“A1:B2”).Font.Size = 19
Worksheets(“Sheet1”).Range(“A1:B2”).Interior.Color =vbYellow
End Sub
代码2:使用对象变量
Sub testUpdate()
Dim rng As Range
Set rng =Worksheets(“Sheet1”).Range(“A1:B2”)
rng.Value = “示例”
rng.Font.Bold = True
rng.Font.Size = 19
rng.Interior.Color = vbYellow
End Sub
上述两段代码是我们已经学过的代码。现在,我们学习了With … End With结构,又可以将代码进行改写而获得相同的效果。
代码3:使用With … End With结构(不使用对象变量)
Sub test1()
WithWorksheets(“Sheet1”).Range(“A1:B2”)
.Value = “示例”
.Font.Bold = True
.Font.Size = 19
.Interior.Color = vbYellow
End With
End Sub
代码4:使用With … End With结构(使用对象变量)
Sub testUpdate1()
Dim rng As Range
Set rng =Worksheets(“Sheet1”).Range(“A1:B2”)
With rng
.Value = “示例”
.Font.Bold = True
.Font.Size = 19
.Interior.Color = vbYellow
End With
End Sub
实际上,我们还可以进一步深入,将相同的对象全部归于With … End With结构内,这样就可以得到下面的代码。
代码5:完全使用With … End With结构
Sub testUpdate2()
Dim rng As Range
Set rng =Worksheets(“Sheet1”).Range(“A1:B2”)
With rng
.Value = “示例”
With .Font
.Bold = True
.Size = 19
End With
.Interior.Color = vbYellow
End With
End Sub
With … End With结构为我们提供了更高效的处理重复引用对象的方式,虽然难以理解一点,也更难阅读,但它确实能带来运行速度上的提高。
猜你喜欢
- 当我们从网上下载了一些好资料,却发现word文档里有水印,或者是广告,或者是制作者的标志,那么怎么去掉他们呢?在下面就由小编给大家分享下技巧
- word怎么添加MediaPlayer控件?word中想要插入媒体文件,使用Media Player控件插入媒体动画的方法,很简单,需要的朋
- 越来越多的用户开始使用win10系统了,但是在使用过程中难免遇到各种各样的问题。最近有Win10用户反映说自己的电脑应用商店出现无法下载应用
- word 2010有时选择页面纸张大小时会发现没有A3的选项这可能是因为word2010当前所选打印机不支持A3,可以点击文件菜单中的&qu
- 我们在实际办公中,某些表格也许只需要稍做一些美化,而其样式不需要相当专业,也不用保存下来以后使用,这时用户可以直接设置word 表格的边框和
- 苹果在本周发布了 iOS 16.3 beta 2。目前看来,iOS 16.3 的更新幅度非常小,主要是修复一些错误和提升系统安全性能,带来了
- excel2007表格中怎么设置打印区域并预览?excel表格很大,为了保证打印的文件全在打印区域内,该怎么设置呢?下面我们就来看看exce
- 一个客户在不同时间借款好几笔,如何能知道他一次借款的金额?能直接查看吗?可以直接显示他总的借款金额呢?这个问题是一个网友提出的,可以看的到,
- 在日常工作中你碰到过输入这个直径符号Φ吗?你知道怎么打出来吗?今天分享几种在表格中快速输入Φ的方法在工作中经常需要制作钢材的一些产品资料,比
- 微软经常会为Win10系统更新一些补丁或者功能,但是系统更新经常会遇到更新失败的情况,有时候更新失败甚至会导致C盘爆满,那么遇到这种情况要如
- Win10X电脑操作系统启动不了光驱怎么办?光盘作为一个相对较老的可移动存储设备,仍然有许多用户在使用,而许多Win10X电脑操作系统用户发
- 在word表格中,有时候会因为内容太多,显示不到同一页,那么word表格跨页断开怎么解决呢?下面介绍一下word表格跨页断开的解决方法。1、
- Word自动编号在办公中对我们来说是个不错的功能,但是有时候不需要这种自动编号,回车就会自动输入,反而觉得是个麻烦,怎么样解决这个自动添加编
- PDF文件怎么添加时间戳?pdf文件中想要添加数字签名的时间戳,该怎么添加?下面我们就来看看详细的教程,很简单,需要的朋友可以参考下为PDF
- 我们有时候需要将word 中单元格区域中的多个连续单元格合并在一起,会使单元格区域变为一个单元格。而相反的操作就是可以对单个单元格进行拆分,
- wps打开以后,页面很小,调整一下显示的比例即可,以wps2013为例方法如下:用wps打开word文档,点击“视图”,可以直接点击上面提供
- Word中有很多实用的技巧,学无止境,我们可以积少成多,掌握越多办公技巧,效率就越高!快速统计文档字数点击审阅-校对-字数统计,就可以看到对
- 视频卡是每台电脑的一个非常重要的功能。视频卡通过一系列的数学运算计算屏幕上每个像素的颜色显示。许多合作伙伴的计算机是双显卡。玩游戏时很难玩游
- excel中怎么将工作表名创建为目录超链接?excel表格中想要快速打开其他的工作表,这时候就可以将工作表设置成超链接,点击就可以打开,该怎
- 最近有Win10笔记本用户反映,电脑很经常出现电源已接通但未充电的情况,用户不知道这是怎么回事,为此非常烦恼。那么,Win10笔记本电源已接