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语句引起的错误是什么?
除了不closuresIf
和End 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