简单的Excel VB单元格值更改 - 错误#1004:应用程序定义或对象定义的错误

时间:2013-05-03 07:34:10

标签: excel vba excel-vba

我一直试图将这个错误修复几个小时,我似乎无法看到我在这里做错了什么。

我的宏如下:

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

提前感谢所有帮助!

3 个答案:

答案 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可以工作。唯一的例外是可以将函数值分配给包含函数引用的单元格