2016-04-28 5 views
0

sheet2の値と一致する場合、sheet1のセルを強調表示する方法を探しています。ここにコードがありますが、エラーは出ていませんが、何もしません。基本的には、Do whileループが空白になるまで、すべてのレコードを調べ、オフセットで選択されたセルの値を読み込み、同じ行にとどまっている間に次のシートのセルの値と比較します。それはシート1で強調表示されますが、そうでなければ移動します。私はVBAの知識があまりないので、私はここでどれくらい離れているのか教えてください。ありがとう。Sheet2で一致した場合のSheet1のハイライト値

Public Sub RoundedRectangle1_Click() 

Dim resource As Range 
Dim register As Range 
Dim cancel As Range 

Set resource = Worksheets("Resource List1").Cells(2, 4) 
Set register = Worksheets("Registered List").Cells(2, 1) 
Set cancel = Worksheets("Cancelled List").Cells(2, 1) 


Call findRegister(resource, register) 

End Sub 

Public Sub findRegister(ByRef resource As Range, ByRef register As Range) 

Dim i As Integer 

i = 0 

Do While resource.Offset(i, 3) <> "" 

If resource.Offset(i, 3).Value = register.Range("A2").Value Then 

resource.Offset(i, 3).Cells.Interior.ColorIndex = 37 

End If 

i = i + 1 

Loop 

End Sub 
+0

空白ではないセルをハイライト表示し、別のシートのセル「A2」と一致させるだけのような条件付き書式設定を使用できますか?また、register.range( "A2")は、レジスタがすでにA2から始まる範囲であるため、実際にはWorksheets( "Registered List")。range( "A3")を参照します。 – gtwebb

+0

はい、私は後で追加したい条件が異なります。 1枚のシートにはユーザーが登録され、3枚目にはユーザーがキャンセルされ、条件付き書式を使用しようとすると面倒です。 – user1557936

答えて

0

コードは基本的には正しいですが、正しいセルを参照するのに問題があると思います。良いデバッグ手法は、適切なセルを参照しているかどうかを視覚的に確認するために、コードに.Cells.Interior.ColorIndex = 4などを追加することです。また、 "F5"、 "F8"、およびブレークポイントを何が問題なのかを把握するのに役立てることもできます。これらを一度も使用していない場合は、http://www.excel-easy.com/vba/examples/debugging.htmlを参照してください。例えば

Do While resource.Offset(i, 3) <> "" '<--Insert a breakpoint on this line, 
             'then press "F8" to make sure the 
             'code inside your Do While loop is 
             'being executed 

    resource.Offset(i, 3).Cells.Interior.ColorIndex = 4 
    register.Range("A2").Cells.Interior.ColorIndex = 6 

    If resource.Offset(i, 3).Value = register.Range("A2").Value Then 

     resource.Offset(i, 3).Cells.Interior.ColorIndex = 40 

    End If 

    i = i + 1 

Loop 
0

たぶん、このような単純なもの。 。 。 。

Sub Compare2Shts() 
For Each Cell In Worksheets("CompareSheet#1").UsedRange 
If Cell.Value <> Worksheets("CompareSheet#2").Range(Cell.Address) Then 
Cell.Interior.ColorIndex = 3 
End If 
Next 

For Each Cell In Worksheets("CompareSheet#2").UsedRange 
If Cell.Value <> Worksheets("CompareSheet#1").Range(Cell.Address) Then 
Cell.Interior.ColorIndex = 3 
End If 
Next 
End Sub 
関連する問題