【VBA初學者教程】- 第一章 VBA入門知識:引用若干單元格區域
使用VBA的過程中,經常會對若干單元格區域進行引用,然後進行批量賦值或設置單元格格式等。如果知道適當的方法可以很容易地同時引用若干單元格區域,可用Range和Union方法引用任意組合的單元格區域;使用Areas屬性可引用工作表上選定的一組單元格區域。
一 使用Range屬性
使用Range屬性時,在兩個或多個引用之間加上逗號,就可以引用多重區域。下例清除選定工作表上三個單元格區域的內容,代碼如下:
Sub one()n 定義一個對象變數rngn Dim rng As Rangen 將活動工作表的單元格區域A1:A10,B1:B5,C1:C8賦予該變數n Set rng = Range("A1:A10,B1:B5,C1:C8")n 使用該變數代替該區域對象,可以設置字體為斜體或清空單元格內容n rng.Font.Italic = Truen rng.ClearContentsnEnd Subn
上面的代碼也可以一行搞定,這裡為了為大家演示,如何把單元格區域賦值給變數,以後對變數進行操作即可,沒必要寫那麼冗長的代碼了。
命名區域使用Range屬性處理多重區域更為容易,下例同時對自定義名稱myRange1和myRange2進行清空內容。
Sub two()n myRange1 = Sheet1!$A$1:$F$16n myRange2 = Sheet1!$C$20:$E$23n Range("myRange1, myRange2").ClearContentsnEnd Subn
設置的自定義名稱截圖如下:
如果定義的名稱位於不同工作表中,例如myRange1位於Sheet1工作表中,myRange2位於Sheet2工作表中,那麼運行如上代碼就會提示「運行時錯誤 1004」。
二 使用 Union 方法
有些時候需要多不連續區域進行批量賦值或設定單元格格式,可以使用Union方法將多個單元格區域組合到一個Range對象中。下例創建了名為myRange的Range對象,並將其定義為單元格區域「A1:F16」和「C20:E23」的組合,然後將該組合區域中的值賦予666,代碼如下:
Sub three()n Dim myRange, myRange1, myRange2 As Rangen Set myRange1 = Range("A1:F16")n Set myRange2 = Range("C20:E23")n 連接兩個單元格區域,類似按住Ctrl鍵選擇不連續區域n Set myRange = Union(myRange1, myRange2)n 賦值為666n myRange.Value = 666nEnd Subn
三 使用Areas屬性
有時候客戶輸入的參數就是多個不連續區域,如何才能針對每一個區域進行單獨操作呢?這裡就可以使用Areas屬性引用選定的單個單元格區域或多塊選定區域集合。
Sub four()n Dim rng, rng2 As Rangen Dim zone As Rangen Set rng = Range("A1:A10,B1:B5,C1:C8")n 集合包括的區域數放入到立即窗口n Debug.Print rng.Areas.Countn 循環處理集合中的每一個區域n For Each zone In rng.Areasn zone.Value = zone.Countn 輸入區域地址到立即窗口n Debug.Print zone.Addressn Nextn 也可以通過Areas(index)引用集合中的區域n Set zone = rng.Areas(1)n Debug.Print zone.AddressnEnd Subn
上面的代碼已經經過詳細注釋,結合動態圖演示,效果更好哦,動態圖如下:
今天的介紹就到此結束了,希望大家在多單元格區域處理過程中更加得心應手,跟隨Steven學習,提高效率指日可待。在學習過程中,有任何疑問,歡迎加群(QQ群:615356012)交流,想要素材的小夥伴可以在公眾號回復「20170711」得到哦~後期文章附帶的素材,大家都可以通過在公眾號回復該文檔發送的日期得到,歡迎下載學習^_^Written by Steven in 20170711^_^
微信公眾號:SaveUTime
SUT學習交流群:615356012,入群審核人:Steven
關注公眾號,提高效率,節約您的時間!
推薦閱讀:
※Excel VBA入門(一)數據類型
※如何用VBA語言同一EXCEL中不同sheet中的列數據按列順序導入到一個sheet中去?
※【VBA初學者教程】- 第一章 VBA入門知識:使用Excel對象的事件
※用excel VBA 可以做哪些簡單的小遊戲?
※Excel VBA 基礎(02.1)