2017-11-22 16 views
0

ExcelのVBAプログラムをセットアップしました。このプログラムは、特定の行の複数のセルの条件が等しい場合に行内のセルを強調表示します。 (下記のコードを参照)デバッガにエラーが表示されず、指定されたセルが強調表示されません。VBAプログラムが正しく実行されていない

以下のサンプルデータでは、ケース1の行(1 = 1であるため)と(10 = 10)でセルが強調表示されます。どのようにこれを動作させるための任意の提案?

Sub x() 

Dim r As Integer 
Dim c As Integer 


With Worksheets(1) 

For r = 1 To .Range("B" & Rows.Count).End(xlUp).row 
    c = .Cells(r, Columns.Count).End(xlToLeft).Column 

    If Cells(r, 3).Value = Cells(r, 6).Value & Cells(r, 4).Value = Cells(r, 7).Value Then 
     Cells(r, 13).Interior.ColorIndex = 46 
     Application.ScreenUpdating = True 

     End If 
Next r 

End With 

End Sub 

サンプルデータ:

Case_1 HT 1 10 STD 1 10 0.008893 0.02564 71 0.35 0.7297 
Case_2 HT 1 10 HT 1 15 -0.04434 0.02564 71 -1.73 0.0881 
Case_3 HT 1 10 STD 1 15 0.008893 0.02564 71 0.35 0.7297 
+4

なぜ条件付き書式設定を使用しないのですか?とにかく、 'If ... Then'ステートメントで '&'を 'And'に置き換えて、それが何であるかを見てください。 (条件付き書式設定はどのマクロよりもずっと高速です)。 –

+0

また、それらの '.value'プロパティは必要ありません。 –

+1

あなたは文法上の問題がたくさんあります.'If condition1 And condition2 Then' ..(&は連結です)。また、 'With'ブロック内で、' Cells() 'の代わりに' .Cells() 'を使いたいでしょう。変数' c'を宣言し、決してそれを使用しません。最後に、 'Application.ScreenUpdating'を有効にしますが、関数の任意のポイントで' false'に設定していません。 –

答えて

0

すべての上記のコメントは良好であったが、私はすべて一緒にそれを置くだろうと思っていました。
"&"を "And"に変更する必要があります。
削除します。 「Dim c」行、「c = Cells」行、および「Application.ScreenUpdating」行が表示されます。
私はExcel 2010を実行しています。あなたのコードは、 "If"ステートメントの ".Cells"または "Cells"のいずれかを使用して上記の変更を行います。
また、各セル参照から ".Value"を削除しました。

Dim r As Integer 
'Dim c As Integer 

    With Worksheets(1) 

    For r = 1 To Range("B" & Rows.Count).End(xlUp).Row 
     'c = Cells(r, Columns.Count).End(xlToLeft).Column 

     If Cells(r, 3) = Cells(r, 6) And Cells(r, 4) = Cells(r, 7) Then 
      Cells(r, 13).Interior.ColorIndex = 46 
      'Application.ScreenUpdating = True 

     End If 
    Next r 

    End With 
関連する問題