【问题标题】:Application Object defined error (1004)应用程序对象定义错误 (1004)
【发布时间】:2016-10-04 03:07:14
【问题描述】:

我正在尝试创建一种在 Excel 工作表的特定列中创建值的方法。继续在 Sheets.Cells.Value = Cint 行上遇到上面的运行时错误。知道可能是什么问题吗?谢谢!

For Each Cell In Sheets(tab_name).Range(cell_range)
    current_row = Cell.Row
    split_cells = Split(Cell.Value, ".")
    Sheets(tab_name).Cells(current_row, 58).Value = CInt(split_cells(0))
Next Cell

【问题讨论】:

  • 是否有“.” ?使用前先检查数组 split_cells
  • 您应该验证单元格是否为空
  • 也许split_cells = Split(Cell.Value & ".", ".") ...?如果有要拆分的内容,split_cells(0) 仍然是正确的,如果没有,则应该作为 vbnullstring 工作。
  • 我无法用示例数据复制它。请注意,1004 错误不会与 CInt 相关 - 这可能是下标错误或类型不匹配。设置断点并测试Sheets(tab_name).Cells(current_row, 58) 的值以查看它是否为有效范围。
  • 我单步执行,单元格(current_row, 58) 为空,但我想将该空值更改为不同的值。它必须在那里有价值吗?

标签: excel vba runtime-error


【解决方案1】:

INT(Cell.Value) 不足以满足您的要求吗?

【讨论】:

    【解决方案2】:

    单元格必须为空。拆分将为任何非空字符串返回一个数组。

    这是一个更简单的写法:

    For Each Cell In Sheets(tab_name).Range(cell_range)
    
        With Cell.EntireRow
            If Cell <> "" Then 
                split_cells = Split(Cell.Value, ".")
               .Cells(1, 58).Value = CInt(split_cells(0))
            Else
               .Cells(1, 58).Value = 0
            End If
    
        End With
    Next Cell
    

    【讨论】:

    • 是的,单元格是空的,但我想将该空单元格更改为 split_cells 值。这不可能吗?
    • 我的代码结构错误。检查我的更新。源单元格为空。不能拆分空字符串。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-28
    • 1970-01-01
    • 2013-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多