我是视觉基础的开始。我想要做的是每当点击一个框时,突出显示一个特定的范围。然后,如果在此之后单击另一个框,则前一个范围将不会突出显示,另一个范围将突出显示。这是我的代码但它现在不起作用。
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
答案 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等的原因的详细信息,请参阅以下任一项: