单击框时突出显示和取消突出显示特定范围

时间:2009-02-02 16:06:06

标签: excel vba automation excel-vba

我是视觉基础的开始。我想要做的是每当点击一个框时,突出显示一个特定的范围。然后,如果在此之后单击另一个框,则前一个范围将不会突出显示,另一个范围将突出显示。这是我的代码但它现在不起作用。

Dim FSelect As Boolean
Dim myRange As Range

Sub Rectangle18_Click()

   If FSelect Then
        UnhighlightBox (myRange) <---error - runtime error "424" object required
   End If

   Range("C9:D9").Select
   HighlightBox

   FSelect = True

   Set myRange = Range("C9:D9")
   End Sub

Sub Rectangle19_Click()

   If FSelect Then
        UnhighlightBox (myRange)
   End If

   Range("C11:D11").Select
   HighlightBox

   FSelect = True

   Set myRange = Range("C11:D11")

End Sub    

Sub HighlightBox()
   Selection.Interior.ColorIndex = 36
End Sub

Sub UnhighlightBox(cellRng As Range)
   cellRng.Interior.ColorIndex = 2
End Sub

3 个答案:

答案 0 :(得分:1)

当我将此代码抛入excel时,它会抱怨Select。我不认为你可以使用Select作为变量...

编辑:选择是VB / A中的保留关键字,它开始选择案例块。

答案 1 :(得分:1)

在调用UnhighlightBox过程时将括号括在参数周围是不正确的。

两种可能的正确形式:

UnhighlightBox myRange

Call UnhighlightBox(myRange)

我发现第一个表单(没有Call关键字)更适合

对于Excel 2003帮助:

  

您无需使用呼叫   调用过程时的关键字。   但是,如果您使用Call关键字   调用需要的过程   参数,参数列表必须是   括在括号中。如果省略   Call关键字,你也必须省略   参数列表周围的括号。

请注意,这不适用于返回值的函数。函数需要作为赋值的一部分调用(例如a = f(x)),并且参数必须括在括号中

您使用FSelect布尔值(初始化为false)应该可以防止在设置UnhighlightBox之前调用myRange的问题。

答案 2 :(得分:0)

使用UnhighlightBox例程时,您需要事先放置Call​​语句或删除括号。

例如:

Call UnhighlightBox (myRange)

UnhighlightBox myRange

有关使用Call等的原因的详细信息,请参阅以下任一项:

what-does-the-call-keyword-do-in-vb6

MSDN