如何在 VBA 中突出显示列的单元格时合并多个条件?
How can I incorporate multiple conditions in highlighting cells of a column in VBA?
我有一个 sheet,在 excel 中有多个数据列,如果数字小于 1.0,我想用红色突出显示一个名为 "FCCR" 的特定列的单元格,并且另一列的内容(旨在解释为什么某些内容 <1.0)为空。
我想我使用如下逻辑找到 FCCR 列:
Dim fccrHeader as Range
Set fccrHeader = ActiveSheet.Rows(1).Find("FCCR", lookat:=xlWhole)
我卡住的地方是考虑如何突出显示单元格 IF 且仅当 FCCR 值小于 1.0 且评论列为空时。我是否有正确的想法来查找 FCCR 列 header?非常感谢。
我已经尝试并测试了以下内容,它确实如您所愿:
Sub foo()
Dim val As Variant
Dim ColumnNumber As Long
Set val = Sheet1.Rows(1).Find("FCCR", lookat:=xlWhole)
ColumnNumber = val.Column
LastRow = Sheet1.Cells(Sheet1.Rows.Count, ColumnNumber).End(xlUp).Row
For i = 1 To LastRow
If Sheet1.Cells(i, 12).Value = "" Then 'Change the number 12 to reflect the column which might be empty
If Sheet1.Cells(i, ColumnNumber).Value < 1 Then
Sheet1.Cells(i, ColumnNumber).Interior.ColorIndex = 3 '3 is equals to red
End If
End If
Next i
End Sub
您可以为此使用条件格式,使用公式吗?
试试这样的东西?我将其放入 Active-X 控制按钮中,但如果需要,您可以在 worksheet_change 上进行。与您可能从其他用户那里找到的内容相比,它有点啰嗦
Private Sub CommandButton1_Click()
Dim fccrHeader As Range
Dim col, otherCol, row As Integer
Set fccrHeader = ActiveSheet.Rows(1).Find("FCCR", lookat:=xlWhole)
col = fccrHeader.Column
otherCol = 7 ' comment column
For row = 2 To 10 'end of data constant or use search
If Cells(row, col).Value < 1 And Cells(row, otherCol).Value = "" Then
'also highlights if both are empty, add that logic to check for ""
With Cells(row, col).Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 255
.TintAndShade = 0
.PatternTintAndShade = 0
End With
End If
Next row
End Sub
我有一个 sheet,在 excel 中有多个数据列,如果数字小于 1.0,我想用红色突出显示一个名为 "FCCR" 的特定列的单元格,并且另一列的内容(旨在解释为什么某些内容 <1.0)为空。
我想我使用如下逻辑找到 FCCR 列:
Dim fccrHeader as Range
Set fccrHeader = ActiveSheet.Rows(1).Find("FCCR", lookat:=xlWhole)
我卡住的地方是考虑如何突出显示单元格 IF 且仅当 FCCR 值小于 1.0 且评论列为空时。我是否有正确的想法来查找 FCCR 列 header?非常感谢。
我已经尝试并测试了以下内容,它确实如您所愿:
Sub foo()
Dim val As Variant
Dim ColumnNumber As Long
Set val = Sheet1.Rows(1).Find("FCCR", lookat:=xlWhole)
ColumnNumber = val.Column
LastRow = Sheet1.Cells(Sheet1.Rows.Count, ColumnNumber).End(xlUp).Row
For i = 1 To LastRow
If Sheet1.Cells(i, 12).Value = "" Then 'Change the number 12 to reflect the column which might be empty
If Sheet1.Cells(i, ColumnNumber).Value < 1 Then
Sheet1.Cells(i, ColumnNumber).Interior.ColorIndex = 3 '3 is equals to red
End If
End If
Next i
End Sub
您可以为此使用条件格式,使用公式吗?
试试这样的东西?我将其放入 Active-X 控制按钮中,但如果需要,您可以在 worksheet_change 上进行。与您可能从其他用户那里找到的内容相比,它有点啰嗦
Private Sub CommandButton1_Click()
Dim fccrHeader As Range
Dim col, otherCol, row As Integer
Set fccrHeader = ActiveSheet.Rows(1).Find("FCCR", lookat:=xlWhole)
col = fccrHeader.Column
otherCol = 7 ' comment column
For row = 2 To 10 'end of data constant or use search
If Cells(row, col).Value < 1 And Cells(row, otherCol).Value = "" Then
'also highlights if both are empty, add that logic to check for ""
With Cells(row, col).Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 255
.TintAndShade = 0
.PatternTintAndShade = 0
End With
End If
Next row
End Sub