VBA引用命名单元格

时间:2014-06-30 15:13:31

标签: excel vba

我有一张桌子,其中一些细胞变灰了。我想编写一个代码,在单击时自动将单元格变为白色,并在输入内容时保持这种状态。如果没有输入任何内容,它将返回灰色。目前我有:

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和设置" Temp"到特定的细胞,但都不起作用。我检查的所有其他来源都说应该是引用命名单元格的正确方法。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:2)

我建议您使用模块级变量来跟踪之前的选择。

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

答案 1 :(得分:0)

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