將單元格聯合起來——Union方法
將單元格聯合起來——Union方法

當我們需要對工作表中不同的區域進行某一操作時,可以使用Application對象的Union方法先將這些區域合成一個區域,然后對這個合成的區域統一操作。
如下圖所示,工作表中有三個單元格區域:A1:B2、C4:D5、E8:F9。
我們要將單元格區域A1:B2和E8:F9的字體設置為紅色。根據前面所學的知識,我們可以使用下面的代碼實現:
Range(“A1:B2”).Font.ColorIndex =3
Range(“E8:F9”).Font.ColorIndex =3
現在,我們使用Union方法來實現:
Union(Range(“A1:B2”),Range(“E8:F9”)).Font.ColorIndex = 3
為方便理解,將上面的代碼分開表示(參考代碼中的注釋來理解):
Sub testUnion3()
Dimrng As Range ‘設置單元格對象變量
‘將單元格區域A1:B2和E8:F9合成一個單元格區域
Set rng = Union(Range(“A1:B2”),Range(“E8:F9”))
‘將合成的區域中的字體顏色設置為紅色
rng.Font.ColorIndex = 3
End Sub
Union方法的語法為:
Application.Union(參數1,參數2,……,參數30)
其中:
Application表示工作簿應用程序對象(頂層對象),可以省略。
參數1,參數2,……,參數30表示單元格對象(Range對象),最少指定2個代表單元格對象的參數,最多30個。
查找并返回多個單元格
在《Excel VBA解讀(41):藏得再好也能找到——使用Find方法實現查找》中,我們初步介紹了使用Find方法查找含有特定內容的單元格,并介紹了使用FindNext方法和FindPrevious方法實現連續查找。通過學習,我們知道要使用Find方法找到含有特定內容的所有單元格,只能與FindNext方法或FindPrevious方法配合。
如果結合使用Union方法,可以動態地再增加單元格,從而找到所有的單元格。
本例中,我們仍然使用該工作表。查找工作表中單元格內容為1的所有單元格。代碼如下:
Sub testUnion4()
Dim rngAllFound As Range ‘用于存放所有找到的單元格
‘將查找到的第一個單元格賦值給變量
Set rng =Range(“A1:D3″).Find(What:=”1”, LookIn:=xlValues)
‘判斷是否找到了單元格
If Not rng Is Nothing Then
‘若找到,則將其地址保存到變量中
firstRng = rng.Address
‘將找到的單元格添加到存放單元格區域的變量中
Set rngAllFound = rng
Do
‘查找下一個單元格
Set rng =Range(“A1:D3″).FindNext(After:=rng)
‘如果找到的單元格不是最先找到的單元格,則將其存放在單元格區域變量中
If rng.Address <> firstRngThen
Set rngAllFound =Union(rngAllFound, rng)
End If
Loop Until rng.Address = firstRng
End If
‘顯示找到的單元格地址
firstRng = ” ”
For Each rng In rngAllFound
firstRng = firstRng & rng.Address& ” ?”
Next rng
MsgBox “內容為1的單元格在:”& firstRng
End Sub
運行代碼后的結果如下圖所示:
代碼中使用Union方法找到滿足條件的所有單元格,然后可以方便地進一步處理這些單元格。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。