VBA *对于每个单元循环* IF(第1列中的值)= x AND IF(第2列中的等效值)> 7 THEN

我有一个与VBA的问题,我似乎无法find一个在线答案。 我几个星期前才开始自学,所以如果这是一个相当简单的答案,我很抱歉…

我正在试图写一个macros,其中整个行是无色的(这是一个单词?)基于列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 

但是这不是我所要求的输出,因为列A中的所有BA,NH和AD值的整个行都是无色的,无论它们是> 7还是<7。

IF-THEN-IF语句引起的错误是什么?

除了不closuresIfEnd If之外,还有另一个问题。

  • For Each Cell In Sheets(5).Range("E9:E" & LastRow)
  • 然后,您正在testing以查看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 

尝试这个:

 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 

你可以使用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