范围内的运行时错误1004(Cells())

时间:2015-09-16 15:54:06

标签: excel vba excel-vba

我在许多宏中都有以下代码,但它需要大量的信息,而我并不需要这些信息。公式如下:

Range("A1" & h & ":BD" & h).Value = Worksheets("ABC1").Range("A" & h & ":BD" & h).Value

我尝试将公式更改为更动态的版本,如下所示:

Sub MFGI_NAV()

Dim x As Variant
Dim y As Variant

    Worksheets("ABC1").Activate

    h = Cells(Rows.Count, "A").End(xlUp).Row

    Set WS = Sheets.Add(before:=Worksheets("ZYX"), Type:=xlWorksheet)
    ActiveSheet.Name = "JKL"

    x = 1
    y = 1
    While y <= 82

        Cells(1, x).Select
        Range(Cells(1, x), Cells(h, x)).Value = Worksheets("ABC1").Range(Cells(1, y), Cells(h, y)).Value

        x = x + 1
        y = y + 3

    Wend
    End Sub

此公式仅接受表格中的每第3列&#34; ABC1&#34;并将其放入&#34; JKL&#34;。

中的每个增量列

然而,当我尝试这个时,我得到一个运行时错误1004。

关于如何让它更动态地运作,有什么建议吗?

BTW,我问的原因是,虽然这个文件只有82列和20k行,但未来的表可能有多达10k列和500k行(是的,我知道这很大,但这就是系统生成信息,只需要1/3)

1 个答案:

答案 0 :(得分:2)

  

范围(Cells(1,x),Cells(h,x))。Value = Worksheets(“ABC1”)。Range(Cells(1,y),Cells(h,y))。Value

您收到该错误,因为您的单元格对象不是完全限定的。

试试这个

WS.Range(WS.Cells(1, x), WS.Cells(h, x)).Value = _
Worksheets("ABC1").Range(Worksheets("ABC1").Cells(1, y), Worksheets("ABC1").Cells(h, y)).Value

同样,请在代码中限定所有对象。