我正在创建一个VBA应用程序,我有以下代码:
Dim previousCell As range
Private Sub Worksheet_SelectionChange(ByVal target As range)
Application.EnableEvents = False
On Error GoTo ws_exit:
Set previousCell = target
getEffort (previousCell) '**Here i get object required**
ws_exit:
Application.EnableEvents = True
MsgBox Err.Description
End Sub
Private Function getEffort(ByVal cell As range)
' do soemthing
End Sub
Run Code Online (Sandbox Code Playgroud)
我不确定为什么会收到错误消息: Object required error at getEffort(previousCell).如果我通过Target,它的工作原理.
谢谢
mwo*_*e02 18
正如其他人所说,问题在于括号.没有人充分解释的是为什么它是括号.
当你这样说:
getEffort previousCell
Run Code Online (Sandbox Code Playgroud)
然后,您将previousCell Range对象传递给getEffort过程.这就是程序所期望的,所以很高兴.
当你这样说:
getEffort (previousCell)
Run Code Online (Sandbox Code Playgroud)
周围的括号previousCell原因VBA来评估的previousCell对象.当VBA 评估对象时,它返回该对象的默认属性.Range对象的默认属性.Value是字符串.
因此,将评估previousCell并将字符串传递给getEffort.当然getEffort期待一个Range对象,因此您会收到错误消息.
您所分配的事实Target来previousCell是一个红色的鲱鱼.切换到时,您可能会引入括号previousCell.如果你不相信我,试试这个:
getEffort (Target)
Run Code Online (Sandbox Code Playgroud)
您将收到相同的错误消息.
看起来目标没有设置为给你错误的对象的实例。当您传入目标时,函数 function(argument) 的参数将设置为对象的实例。当您设置 previouscell = target 时,目标实际上需要是某个东西,否则您将收到执行错误。
尝试设置 previouscell = ActiveCell
| 归档时间: |
|
| 查看次数: |
14552 次 |
| 最近记录: |