【问题标题】:Simple Excel VB Cell value change - Error #1004: Application-defind or object-defined error简单 Excel VB 单元格值更改 - 错误 #1004:应用程序定义或对象定义错误
【发布时间】:2015-08-07 19:04:34
【问题描述】:

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

我的宏如下:

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

提前感谢所有帮助!

【问题讨论】:

  • 你是从 Excel 单元格还是 VBA/IDE 环境调用这个函数?
  • 如果您从 Excel 单元格调用您的函数,请参阅 this...
  • 定义 Range("Q2") 属于哪个工作表?例如:ws.Range("Q2") = "新值"
  • 你能贴出你用来调用函数的代码吗?这可能会对这个问题有所启发。你的代码对我来说很好。
  • @HeadofCatering:我已经删除了答案。让我们等待 OP 关于如何调用该函数的回复。感谢您纠正我。

标签: vba excel


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    如果您对返回不感兴趣,那么 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 并作为字符串返回?

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-28
        相关资源
        最近更新 更多