运行时错误1004在范围(Cells())

我在一些macros中有以下代码,但它需要大量的信息,我不需要。 公式如下:

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

我试图将公式更改为更加dynamic的版本,如下所示:

 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 

这个公式只需要在表格“ABC1”的每一列中的第三列,并将其放入“JKL”中的每个增量列中。

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

有什么build议,我怎样才能得到这个更dynamic的工作?

顺便说一句,我要问的原因是,虽然这个文件只有82列,20K行,未来工作表可能有高达10K列和500K行(是的,我知道这是巨大的,但这是系统生成的方式信息,只有三分之一是需要的)

范围(单元格(1,x),单元格(h,x))值=工作表(“ABC1”)范围(单元格(1,y),单元格(h,y))。

你得到这个错误,因为你的单元格对象不完全合格。

尝试这个

 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 

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