我是Visual Basic的初学者,并试图将具有大量随机空白单元格的某些列的所有值放在另一个工作表中,而在另一个没有空白单元格的列中连续。我使用命令 FormulaR1C1 ,而不是复制值(不知道这是否是这种方法的智能方法)。
调试时,会弹出一条消息,说明当我尝试将x1向下移动一行时出现错误424,在第二个 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
任何帮助将不胜感激。谢谢!!!
答案 0 :(得分:0)
除了我在上面的评论中所写的内容之外,还有另一种方法可以考虑复制非空白单元格:
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
个参数究竟取决于您是复制公式,常量还是两者。目标范围内的结果只是值;公式不会被复制。