内部错误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
参数取决于您是复制公式,常量还是两者。 而目标范围内的结果只是价值; 公式将不会被复制。