2017-02-03 6 views
0

オンラインでの回答が見つからないVBAに問題があります。私は数週間前に自分自身を教え始めましたが、これはかなり簡単な答えであれば謝ります...VBA *各セルループ用* IF(列1の値)= x AND IF(列2の等価値)> 7 THEN

私は、行全体が色づけされていないマクロを書こうとしています列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 

唯一の問題は、あります。

?私は何かが欠けアム...あり

If ActiveCell.Offset(0, 35) > 7 Then 

、私は以下の行を削除する場合

は、コードが実行される...「は」それは私がBAのすべてとして必要と出力ではありません、NH &列AのAD値は、7より大きいかどうかに関わらず、行全体の色が消えます。

IF-THEN-IF文によるエラーですか?

+1

場合、ネストされたを閉じます。別の '終わり 'があるはずです – Hexxed

答えて

0

あなたはEnd IfIfを閉じていないほか、別の問題が発生しています。

あなたが次にあなたが Cell.Value = "BA" orかどうかを確認するためにテストしている For Each Cell In Sheets(5).Range("E9:E" & LastRow)
  • Cellにループしている
    • ...など
    • しかし、その後あなたは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

    これを試してみてください:

    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 
    
    +0

    ありがとう、私はそれが何か簡単だろうと分かっていました。 –

    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 
    
    関連する問題