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

Vba 简单Excel VB单元格值更改-错误#1004:应用程序定义或对象定义错误,vba,excel,Vba,Excel,我已经尝试修复这个错误好几个小时了,但我似乎看不出我在这里做错了什么 我的宏如下所示: 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

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

我的宏如下所示:

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”设置一个新值时,会出现错误“error#1004:应用程序定义的错误或对象定义的错误”

网络上有几个错误条目,但在这种情况下,当我试图简单地将字符串值设置为空单元格时,没有一个条目

单元格“Q2”是空的,我选择该单元格是因为它没有合并,也没有引用其他函数或任何东西


提前感谢所有的帮助

如果您对返回不感兴趣,那么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

除非
testvalue
被指定为
testValueChange
并作为字符串返回?

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

Dim RNG as Range
Set RNG = Range("Q2")
RNG.value = "new value"

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

是否从Excel单元格或VBA/IDE环境调用此函数?查看是否从Excel单元格调用函数…定义工作表范围(“Q2”)所属的范围?例如:ws.Range(“Q2”)=“new value”您可以发布用于调用函数的代码吗?这可能会对这个问题有所帮助。你的代码对我来说很好。@HeadofCatering:我已经删除了答案。让我们等待OP关于如何调用函数的答复。谢谢你纠正我。