我遇到VBA问题,我似乎找不到在线答案。我几周前才开始自学,如果这是一个相当简单的答案,那么道歉......
我正在尝试根据E列中的值和AN列中的等效值(同一行)编写一个宏,其中整行是未着色的(这是一个单词??)。到目前为止我所拥有的是:
For Each cell In Sheets(5).Range("E9:E" & LastRow)
If (cell.Value = "BA" Or cell.Value = "NH" Or cell.Value = "AD") Then
If ActiveCell.Offset(0, 35) > 7 Then
cell.EntireRow.Interior.color = xlNone
End If
Next cell
唯一的问题是,当我尝试运行它时会出现'编译错误:下一步没有'错误消息。
??我错过了什么......有一个'For'......
如果我删除以下行,则代码会运行,
If ActiveCell.Offset(0, 35) > 7 Then
但它不是我要求的输出,因为所有BA,NH&amp; A列中的AD值使其整行无颜色,无论它们是> 7还是<7。
错误是由IF-THEN-IF语句引起的吗?
答案 0 :(得分:2)
试试这个:
For Each cell In Sheets(5).Range("E9:E" & LastRow)
If (cell.Value = "BA" Or cell.Value = "NH" Or cell.Value = "AD") Then
If ActiveCell.Offset(0, 35) > 7 Then
cell.EntireRow.Interior.color = xlNone
End If // You are missing this
End If
Next cell
答案 1 :(得分:0)
除了不使用If
关闭End If
之外,还有其他问题。
Cell
For Each Cell In Sheets(5).Range("E9:E" & LastRow)
上循环播放
Cell.Value = "BA" or
...等等If ActiveCell.Offset(0, 35) > 7 Then
,我认为ActiveCell
也是Cell
。最后一件事,您可以使用Or
而不是使用多个Select Case
。
<强>代码强>
For Each Cell In Sheets(5).Range("E9:E" & LastRow)
Select Case Cell.Value
Case "BA", "NJ", "AD"
If Cell.Offset(0, 35) > 7 Then
Cell.EntireRow.Interior.Color = xlNone
End If
End Select
Next cell
答案 2 :(得分:0)
您可以使用AutoFilter()
:
With Sheets(5)
With .Range("E8", .Cells(.Rows.Count, "E").End(xlUp)).Resize(, 36)
.AutoFilter Field:=1, Criteria1:=Array("BA", "NJ", "AD"), Operator:=xlFilterValues
.AutoFilter Field:=36, Criteria1:=">7"
If Application.WorksheetFunction.Subtotal(103, .Cells) > 1 Then .Resize(.Rows.Count - 1).Offset(1).SpecialCells(xlCellTypeVisible).EntireRow.Interior.Color = xlNone
End With
.AutoFilterMode = False
End With