我想遍歷 excel 作業表的行和列(范圍 B3:I16)。如果單元格值與我的 p 列匹配,我想將單元格的背景著色為相應的十六進制代碼(O 列)或 rgb 代碼(L:M 列)的顏色。
我在“Next j”行看到一個編譯錯誤,上面寫著“Next without for”,我認為這意味著前一行有錯誤。我無法解決該錯誤。
一旦我的代碼開始作業,是否有更有效的方法來檢查 P 列中的所有值而無需大量的 if else 陳述句?

Sub format_quilt()
Dim i, j As Long
'psuedo code python style
'for i in range column number max
' for j in range row number max
' if (cell value == to index name in p4:p14) or (cell directly above == index name in p4:p14)
' color current cell using hex number
For i = 3 To Range("R2").Value
For j = 2 To Range("R1").Value
If (Cells(i, j).Value = Range("P4").Value) Or (Cells(i - 1, j).Value = Range("P4").Value) Then
Cells(i, j).Interior.Color = RGB(Range("L4").Value, Range("M4").Value, Range("n4").Value)
Next j
Next i
End Sub
uj5u.com熱心網友回復:
您可以使用Match()Col P 檢查您的串列。
例如(從匹配的單元格中復制填充顏色):
Option Explicit
Sub format_quilt()
Dim c As Range, ws As Worksheet, m, rngList As Range
Dim i As Long, j As Long
Set ws = ActiveSheet 'or some specific sheet
Set rngList = ws.Range("P4:P14") 'lookup range
For i = 3 To ws.Range("R2").Value
For j = 2 To ws.Range("R1").Value
Set c = ws.Cells(i, j)
m = Application.Match(c.Value, rngList, 0)
If Not IsError(m) Then 'got a match?
c.Interior.Color = rngList.Cells(m).Interior.Color
Else
c.Interior.ColorIndex = xlNone 'clear if no match
End If
Next j
Next i
End Sub
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/537933.html
上一篇:VBAIF其他條件
