2

我已经尝试修复这个错误几个小时了,我似乎看不出我在这里做错了什么。

我的宏如下:

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”是空的,我专门选择了那个单元格,因为它没有被合并,也没有被另一个函数或任何东西引用。

提前感谢所有帮助!

4

3 回答 3

1

我现在在 Linux 操作系统上,所以我无法在 Excel 中对此进行测试,但尝试先设置一个范围对象,然后使用.value属性分配值。IE:

Dim RNG as Range
Set RNG = Range("Q2")
RNG.value = "new value"
于 2013-05-04T02:54:20.530 回答
0

如果您对返回不感兴趣,那么 shahkalpesh 有答案,但如果您有兴趣在从其他地方运行时静默监控宏,那么像这样返回布尔值。

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 子中使用。

If testValueChange then
    'process worked
Else
    'process didn't work
End if

除非testvaluetestValueChange作为字符串返回?

于 2013-05-03T11:28:56.113 回答
0

从函数(或从函数启动的调用链)调用时,不能为单元格赋值或以任何方式更改它们。只有一个 Sub 可以工作。唯一的例外是函数值可以分配给包含函数引用的单元格

于 2015-08-07T11:04:34.100 回答