如何将单元格地址存储到变量VBA

时间:2016-09-05 19:14:14

标签: excel vba excel-vba variables onchange

我正在编写一个简单的宏,用于在更改后将修改后的值(在一张纸上)与其原始值(在另一张纸上)进行比较。如果它们是不同的值,我希望这两个单元格都被赋予黄色填充。

但是,在尝试存储目标单元格的地址时,我遇到了类型不匹配错误。据我了解,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

感谢您的帮助!

1 个答案:

答案 0 :(得分: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

注意:如果Target是多单元格范围,这将引发错误,因为除非是单个单元格,否则无法比较两个范围内的值。