VBA引用命名单元格

我有一张桌子,一些格子变灰了。 我想编写一个代码,当点击时会自动将单元格变成白色,如果input内容,则保持原样。如果没有input内容,则会返回灰色。 目前我有:

Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim Temp As Range If Range(“Temp”).Value = "" Then Range("Temp").Interior.Pattern = xlGray25 'If the cell is gray, it turns it white when clicked on. This part works fine If Target.Interior.Pattern = xlGray25 Then Target.Interior.Pattern = xlSolid 'Labels the changed cell as “Temp” so it can be referenced ThisWorkbook.Names.Add “Temp”, Target End If End Sub 

但是,那

 If Range("Temp").Value = "" Then 

行得到一个不匹配的错误。 我尝试没有.value和设置“临时”到一个特定的单元格,但都没有工作。 我检查的所有其他来源说,应该是引用命名单元格的正确方法。 任何帮助将不胜感激。

我build议你使用模块级别的variables来跟踪前面的select。

 Private mrPrevious As Range Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Not mrPrevious Is Nothing Then 'If IsEmpty(mrPrevious.Value) Then If IsEmpty(mrPrevious.Cells(1).Value) Then mrPrevious.Interior.Pattern = xlGray25 End If End If If Target.Interior.Pattern = xlGray25 Then Target.Interior.Pattern = xlSolid End If Set mrPrevious = Target End Sub 

不需要VBA。 请阅读“条件格式”。 它位于Home Ribbon中间的Style组中。