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