内部错误424如果使用偏移

我完全是Visual Basic的初学者,并试图将其中有大量随机空白单元格的所有值放在另一个表单中,在另一个没有空白单元格的列中连续显示。 我用FormulaR1C1这个命令,而不是复制这个值(不知道这是否是这个聪明的做法)。

在debugging的时候,会popup一个消息,说出现错误424,当我尝试向下移动x1一行时,在第二个Else中

代码如下:

Sub Copiar() ' ' Copiar Macro ' Dim x1, y1 As Object Set x1 = Sheets("Hoja1").Cells(1, "C") Set y1 = Sheets("Hoja2").Cells(3, "D") contador = 0 10 If x1 = "" Then x1 = x1.Offset(1, 0) contador = contador + 1 If contador < 20 Then GoTo 10 Else: GoTo 20 End If Else: y1.FormulaR1C1 = x1 x1 = x1.Offset(1, 0) y1 = y1.Offset(1, 0) contador = contador + 1 GoTo 10 End If 20 End Sub 

任何帮助,将不胜感激。 谢谢!!!

除了我在上面的注释中写的内容外,还有另一种方法可以考虑复制非空白单元格:

 Option Explicit Sub vbaCopy() Dim x1 As Range, y1 As Range With Worksheets("sheet1") Set x1 = .Range(.Cells(1, "C"), .Cells(.Rows.Count, "C").End(xlUp)) End With Set y1 = Worksheets("sheet2").Cells(3, "D") y1.EntireColumn.Clear x1.SpecialCells(xlCellTypeConstants).Copy Destination:=y1 'If you have both constants and formulas, try: 'With x1 ' Union(.SpecialCells(xlCellTypeConstants), .SpecialCells(xlCellTypeFormulas)).Copy Destination:=y1 'End With End Sub 

究竟使用哪个SpecialCells参数取决于您是复制公式,常量还是两者。 而目标范围内的结果只是价值; 公式将不会被复制。