大家早。只是一個快速的給你!
我有兩個時間表,我希望讓底部表的內部顏色與頂部表相匹配。我想在 VBA 中執行此操作,因為兩個表范圍都是動態的并帶有資料重繪 ,我目前在較低的表上有一個 ForEach 回圈,其中包含一個命名范圍(cpttimes),并且頂部表時間也在一個命名范圍內(次)如果我可以擠入一些代碼來同時設定 interior.color 那就太好了!已經在網上看過了,但是很難找到一些整潔的代碼:)
到目前為止嘗試了幾種方法但失敗了:)
有任何想法嗎??
uj5u.com熱心網友回復:
請使用下一種方式。我在同一張表中存在的兩個表上測驗了代碼。您應該根據需要完全設定它們(在單獨的作業表中,代碼也可以作業):
Sub matchTableColors()
Dim tbl1 As ListObject, tbl2 As ListObject, i As Long, dbRng As Range, mtchCell As Range
Set tbl1 = ActiveSheet.ListObjects("ColoredTableName") 'the one having colored cells
Set tbl2 = ActiveSheet.ListObjects("ToBeColoredTbl") 'the one to be colored
Set dbRng = tbl2.DataBodyRange
'Debug.Print dbRng.address, tbl1.DataBodyRange.address: Stop
For i = 1 To dbRng.rows.count
Set mtchCell = tbl1.DataBodyRange.Find(What:=dbRng.cells(i, 1).Text, LookIn:=xlValues, lookat:=xlWhole)
If Not mtchCell Is Nothing Then
dbRng.cells(i, 1).Interior.Color = mtchCell.Interior.Color
End If
Next i
End Sub
注意:第二個表中的列寬必須適合或大于查看所有文本所需的寬度。我dbRng.cells(i, 1).Text
的意思是回傳可見文本....
編輯:
請使用下一個代碼來處理兩個范圍(而不是表格)
Sub matchNamedRngColors()
Dim rng1 As Range, rng2 As Range, i As Long, mtchCell As Range
Set rng1 = ActiveSheet.Range("Name1")
Set rng2 = ActiveSheet.Range("Name2")
For i = 1 To rng2.rows.count
Set mtchCell = rng1.Find(What:=rng2.cells(i, 1).Text, LookIn:=xlValues, lookat:=xlWhole)
If Not mtchCell Is Nothing Then
rng2.cells(i, 1).Interior.Color = mtchCell.Interior.Color
End If
Next i
End Sub
請在測驗后發送一些反饋
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/536521.html
標籤:擅长VBA颜色
下一篇:從vba中的陣列中間洗掉一個專案