Excel VBA End With結構,專為對象而生

      網友投稿 910 2025-03-31

      Excel VBA End With結構,專為對象而生

      我們主要是和對象打交道,這包括各種各樣的對象以及由這些對象組成的集合對象。我們來看看并學習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

      Excel VBA End With結構,專為對象而生

      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結構為我們提供了更高效的處理重復引用對象的方式,雖然難以理解一點,也更難閱讀,但它確實能帶來運行速度上的提高。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:如何取消合并的單元格(如何取消合并的單元格word)
      下一篇:如何對word文檔進行加密(word文檔如何加密?)
      相關文章
      综合亚洲伊人午夜网 | 亚洲AV日韩精品一区二区三区| 亚洲日产2021三区在线 | 亚洲av专区无码观看精品天堂| 亚洲精品视频在线观看视频| 久久精品亚洲综合| 国产精品V亚洲精品V日韩精品| 亚洲AV伊人久久青青草原 | 久久久亚洲AV波多野结衣| 亚洲图片一区二区| 亚洲一区中文字幕久久| 亚洲无删减国产精品一区| 亚洲国产一区国产亚洲 | 亚洲人成色在线观看| 亚洲精品国产国语| 亚洲中文字幕久久精品无码A | 亚洲AV午夜福利精品一区二区| 亚洲动漫精品无码av天堂| 久久综合日韩亚洲精品色| 亚洲AV无码国产在丝袜线观看| 亚洲AV无码专区在线播放中文| 久久精品国产99精品国产亚洲性色| 亚洲国产天堂在线观看| 亚洲系列中文字幕| 亚洲av乱码一区二区三区香蕉| 亚洲日韩国产AV无码无码精品| 亚洲欧美国产精品专区久久| 亚洲av日韩专区在线观看| 亚洲国产综合久久天堂| 区久久AAA片69亚洲| 亚洲AV综合色区无码一区| 99亚洲精品高清一二区| 亚洲成电影在线观看青青| 亚洲中文无码mv| 国产精品观看在线亚洲人成网| 亚洲国产免费综合| 亚洲日韩中文无码久久| 亚洲精品视频在线| 亚洲a∨无码男人的天堂| 亚洲精品蜜夜内射| 亚洲精品天堂成人片?V在线播放|