单击框时突出显示和忽略特定范围

我是视觉基础的开始。 我试图做的是每当一个盒子被点击,突出一个特定的范围。 然后,如果在此之后单击另一个框,则以前的范围将不亮,而另一个范围将突出显示。 这是我的代码,但现在不工作。

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 

当我把这个代码放入excel时,它会抱怨Select。 我不认为你可以使用select作为一个variables…

编辑:select是VB / A中的保留关键字,它开始select大小写块。

调用UnhighlightBox过程时在括号中放置括号是不正确的。

两种可能的正确forms:

UnhighlightBox myRange

Call UnhighlightBox(myRange)

我发现第一种forms(没有Call关键字)是可取的

对于Excel 2003帮助:

调用过程时不需要使用Call关键字。 但是,如果使用Call关键字来调用需要参数的过程,则参数列表必须括在括号内。 如果您省略了Call关键字,则还必须省略参数列表的括号。

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

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

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

例如:

 Call UnhighlightBox (myRange) 

要么

 UnhighlightBox myRange 

有关为什么要使用呼叫的更多信息,请参阅以下任一内容:

什么-做最致电关键字-DOfunction于VB6

MSDN