excel - 引用 Range.Row() 设置的 Range 对象会生成错误 1004 "Application-defined or object-defined error"

标签 excel vba

我通过从另一个范围对象的 Rows() 设置它来创建一个范围对象。当我按行和列引用新创建的范围时,它会生成错误 1004。

我可以按行和列引用原始范围。我已经包括检查以确保 rng 对象指向与数据集对象相同的范围。当我检查 rng 对象时,Value2 显示单行数据。

下面是我正在使用的生成错误的最小代码。

Private Sub TestRangeObject()

Dim i As Long
Dim dataset As Range
Dim rng As Range

    Set dataset = sRoster.Range("B18:E37")

    For i = 1 To dataset.Rows.Count

        Set rng = dataset.Rows(i)

        Debug.Print "Rng is Range Obj: " & (TypeOf rng Is Range)
        Debug.Print "Same worksheet: " & (rng.Parent.CodeName = dataset.Parent.CodeName)
        Debug.Print "Same address: " & (dataset.Rows(i).Address = rng.Address)

        'can reference dataset object by row and column
        Debug.Print "First column (dataset): " & dataset(i, 1).Address

        'error when referencing rng object by row and column
        Debug.Print "First column (rng): " & rng(1, 1).Address

    Next i

End Sub

最佳答案

作为附加细节:使用 Rows(somerow) 之间存在差异和 Range(somerange) .

这可以通过一个简单的例子来验证:

Sub Test()
    Dim rng As Range
    Set rng = Sheet1.Range("1:1")
    Debug.Print rng(1, 1).Address ' returns $A$1

    Dim rng2 As Range
    Set rng2 = Sheet1.Rows(1)
    Debug.Print rng2(1).Address ' succeeds, returns $1:$1
    Debug.Print rng2(1, 1).Address ' fails
End Sub

解决方案 - 使用 Rows(myRow).Cells - 已经提出。

编辑:

为了捕捉和总结评论中的一些来回,Row , 无论是Range.Rows(somerow)Sheet.Rows(somerow) , 将一个单元称为一行,而不是单个单元格。

例如,Range("A1:E10").Rows将引用 10 行,而不是 50 个单元格。
同理,Sheet1.Rows(1)指 1 行,而不是 16384 个单元格。由于没有更好的术语,该行是“考虑的最小单位”。一行不能有列索引 - 它只是一行,而不是构成该行的所有单元格的集合,每个单元格都有自己的列索引。

所以你需要使用 Cells如果您特别想索引某一行中的单元格。

关于excel - 引用 Range.Row() 设置的 Range 对象会生成错误 1004 "Application-defined or object-defined error",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56601613/

相关文章:

vba - Excel VBA 计时器性能因哪个工作表处于事件状态而异?

EXCEL 根据展示位置汇总分数(结合 VLOOKUP 和 SUM)

vba - 删除列中具有重复信息的行

vba - 作为模块化字段访问修饰符,Dim、Global、Public 和 Private 之间有什么区别?

vba - 添加注释后如何触发VBA代码?

html - 如何使用 "getElementByClassName()"解析 VBA 中的 HTML 元素?

vba - Excel 选择案例类型不匹配错误

excel - 如何在不破坏对象的情况下停止 VBA 宏

excel - SSIS2005 : Importing from multiple XL files/sheets with inconsistent metadata

excel - 用户选择的打印范围