我一直试图将这个错误修复几个小时,我似乎无法看到我在这里做错了什么。
我的宏如下:
Function testValueChange(cell As Range)
On Error GoTo ErrorHandler
Dim testValue As String
testValue = Range(cell.Address)
MsgBox testValue
Range("Q2") = "new value"
Exit Function
ErrorHandler:
MsgBox "Error #" & Err & " : " & Error(Err)
End Function
我能够正确检索“testValue”并显示在MsgBox上。但是,当我尝试将新值设置为单元格“Q2”时,我收到错误“错误#1004:应用程序定义或对象定义的错误。”
网上有几个条目错误,但在我尝试简单地将字符串值设置为空单元格的情况下,这些条目都没有!
单元格“Q2”是空的,我选择了那个单元格,因为它没有合并,也没有引用其他函数或任何东西。
提前感谢所有帮助!
答案 0 :(得分:0)
如果您对返回不感兴趣,那么shahkalpesh有答案,但如果您有兴趣在从其他地方运行时静默监视宏,那么返回boolean就像这样。
Function testValueChange(cell As Range) as boolean
TestValueChange = TRUE
On Error GoTo ErrorHandler
Dim testValue As String
testValue = Range(cell.Address)
MsgBox testValue
Range("Q2") = "new value"
Exit Function
ErrorHandler:
testValueChange = FALSE
End Function
vba sub中的用法。
If testValueChange then
'process worked
Else
'process didn't work
End if
除非testvalue
属于testValueChange
并以字符串形式返回?
答案 1 :(得分:0)
我现在正在使用Linux操作系统,所以我无法在Excel中测试它,但首先尝试设置范围对象,然后使用.value
属性赋值。即:
Dim RNG as Range
Set RNG = Range("Q2")
RNG.value = "new value"
答案 2 :(得分:0)
从函数(或从函数启动的调用链)调用时,不能为单元格赋值或以任何方式更改它们。只有一个Sub可以工作。唯一的例外是可以将函数值分配给包含函数引用的单元格