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结构为我们提供了更高效的处理重复引用对象的方式,虽然难以理解一点,也更难阅读,但它确实能带来运行速度上的提高。

标签:excel图表制作,excel常用函数,excel数据透视表,Excel教程
0
投稿

猜你喜欢

  • wireshark怎么抓包_wireshark使用教程入门

    2023-10-13 10:53:33
  • Win7系统IE浏览器收藏夹变成灰色如何处理?

    2023-09-06 10:23:26
  • 手机通过电脑上网,小编告诉你手机怎么通过电脑上网

    2023-08-29 22:34:50
  • 有道精品课怎么导出视频?有道精品课导出视频的方法

    2022-07-09 19:07:20
  • mac快速电脑锁屏/睡眠方法

    2022-09-09 07:03:33
  • Win11怎么设置默认浏览器?Win11设置默认浏览器的方法

    2023-12-26 18:59:25
  • excel函数公式常用有哪些?excel函数公式大全及用法教程

    2023-11-17 16:45:37
  • Win8解决Office无法验证应用程序许可证的方法

    2023-09-11 01:38:09
  • 荣耀电脑安装系统教程_荣耀电脑安装win7系统教程

    2023-02-20 06:57:14
  • Win10电脑搜索功能无法找到内容的解决方案

    2022-11-09 14:51:55
  • 如何利用win 10远程凭据保护,实现安全的远程桌面连接

    2023-08-11 20:49:20
  • ppt背景颜色怎么填充

    2022-05-29 21:08:09
  • Win10更新错误代码:0x80240008 怎么解决?

    2023-03-16 06:56:40
  • 介绍柏拉图是什么意思,分别介绍柏拉图人物和用excel制作图表之柏拉图

    2022-09-23 08:31:45
  • Win7电脑怎么美化桌面?Win7桌面美化方法

    2022-05-19 21:22:34
  • 微见app怎么添加安全区域?微见app添加安全区域的方法

    2023-05-07 08:37:52
  • 「excel小技巧」Mac Excel单元格内换行快捷键

    2022-07-24 21:34:21
  • 如何在Linux系统中安装OpenOffice

    2022-02-17 02:29:11
  • 如何在EXCEL中建立分割线?

    2022-11-17 04:47:00
  • 斗鱼直播如何设置超清高清 斗鱼直播设置超清高清的方法

    2022-08-10 02:20:50
  • asp之家 电脑教程 m.aspxhome.com