【发布时间】:2022-12-18 16:00:03
【问题描述】:
我想创建一个 excel 宏来搜索工作表并根据单元格内的值突出显示单元格和单元格之间。
For each Column in sheet
For Each Cell in Column
val = Cell.Value
valAddress = Cell.Address
If val == ("=<") AND ActiveCell.Colour == NOT green
startSelect = valAddress
ElseIf val == ("==") AND ActiveCell.Colour == NOT green
set cell.colour = green
ElseIf val == (">") AND startSelect == NOT Nothing AND ActiveCell.Colour == NOT green
Select Cells From startSelect to Active.Cell
Set Cell.Colour = Green
val = 0
startSelect = NULL
valaddress = 0
ElseIf Cell == Final Cell in Column and startSelect == NOT Nothing
Select Cells From startSelect to Active.Cell
Set Cell.Colour = Green
val = 0
startSelect = NULL
valaddress = 0
我试图在实际的 VBA 中写这个,但收效甚微。有谁知道如何向下搜索每一列以及如何找出何时位于工作表底部?
我基本上想重新创建附加照片中的突出显示,但创建一个自动突出显示的程序。
结果:
提前谢谢了!!
请参阅下面的尝试
Sub btnFillTableColour()
Dim i As Integer
Dim j As Integer
Dim k As Integer
Dim row As Integer
Dim cellValue As String
For i = 6 To 196
For j = 7 To 305
cellValue = Cells(i, j)
If cellValue = (">=") And ws.Cells(i, j).Interior.Color = RGB(0, 0, 0) Then
row = j
col = i
cellValue = 0
ElseIf cellValue = ("==") And ws.Cells(i, j).Interior.Color = RGB(0, 0, 0) Then
Cells(i, j).Interior.Color = vbGreen
cellValue = 0
ElseIf cellValue = ("<") And ws.Cells(i, j).Interior.Color = RGB(0, 0, 0) Then
For k = row To j
Cells(k, j).Interior.Color = vbGreen
Next k
k = 0
row = 0
cellValue = 0
ElseIf j = 304 And ws.Cells(i, j).Interior.Color = RGB(0, 0, 0) And row > 0 Then
For k = row To j
Cells(k, j).Interior.Color = vbGreen
Next k
k = 0
row = 0
cellValue = 0
Next j
Next i
End Sub
【问题讨论】:
-
您的伪代码将单元格的颜色与绿色进行比较,但您的 VBA 将其与黑色进行比较。您是要使用
vbGreen而不是RGB(0, 0, 0)吗? -
如果你想检查一个单元格是否有不填充,然后测试
cell.Interior.ColorIndex = xlNone你提到“工作表底部”但你的代码只循环到第 196 行:你真的只在那个固定范围内循环吗?==是怎么回事? - 这不是单元格的有效值(Excel 想要更正“公式”...)