2016-09-05 6 views
0

Я пишу простой макрос, чтобы сравнить измененное значение (на одном листе) с его исходным значением (на другом листе) после внесения изменений. Если они разные значения, я хочу, чтобы обе эти ячейки получили желтую заливку.Как сохранить адрес ячейки переменной VBA

Однако при попытке сохранить адрес целевой ячейки я получаю ошибку несоответствия типа. Как я понимаю, Target.Address возвращает строку. Установка Location = Target дает местоположение значение цели, а не его адрес. Как я могу ссылаться на тот же адрес цели на исходном листе при внесении изменений?

Dim Location as Range 

Private Sub Worksheet_Change(ByVal Target As Range) 

Set Location = Target.Address 

If Target.Value = Sheets("Original").Range("Location").Value Then 
    Target.Interior.Pattern = xlNone 
    Sheets("Original").Range("Location").Interior.Pattern = xlNone 

Else 
    Target.Interior.Color = 255 
    Sheets("Original").Range("Location").Interior.Color = 65535 

End If 

End Sub 

Спасибо за любую помощь!

+0

Возможный дубликат [В чем разница между dim и установленным в vba] (http://stackoverflow.com/q/3872339/11683) – GSerg

+1

Хотя, похоже, вы хотите условное форматирование. – GSerg

ответ

4
Dim Location as range 

Private Sub Worksheet_Change(ByVal Target As Range) 

Set Location =Sheets("Original").Range(Target.Address) 

If Target.Value = Location.Value Then 
    Target.Interior.Pattern = xlNone 
    Location.Interior.Pattern = xlNone 
Else 
    Target.Interior.Color = 255   
    Location.Interior.Color = 65535 
End If 

End Sub 

Примечание: это вызовет ошибку, если объект находится диапазон мульти-элементный, потому что вы не можете сравнивать значение по двум диапазонам, если это не одна ячейка.