VBA代码在不同的工作簿中工作方式不同

你好,我有一个简单的VBA代码,它复制一列,并粘贴到另一列没有空的单元格,这是在原来的列。 它在我写的woorkbook中工作。 但我把它复制到另一个,我需要它的地方。 它不止一次复制所需的单元格,并将整个列填入这些值。

Range("f5:f2500").ClearContents With Range("d5:d2500") .Offset(, 0).SpecialCells(xlCellTypeFormulas, _ xlNumbers).Copy .Offset(, 2).PasteSpecial skipblanks:=True, _ Paste:=xlPasteValues End With 

下面的Sub将复制列D中的公式(单元格中的值),并将它们的值粘贴到列F中,从单元格“F5”开始向下(没有空白)。

Sub接收Worksheet.Name作为参数,因此里面的所有Range都完全限定了该特定工作表的名称。

 Option Explicit Sub CopyColumnWOBlanks(wsName As String) With Worksheets(wsName) .Range("F5:F" & .Cells(.Rows.Count, "F").End(xlUp).Row).ClearContents .Range("D5:D" & .Cells(.Rows.Count, "D").End(xlUp).Row).SpecialCells(xlCellTypeFormulas, xlNumbers).Copy .Range("F5").PasteSpecial Paste:=xlPasteValues, skipblanks:=True End With End Sub 

下面的这个Main ,只是为了testing,修改它以适应您的需求。

 Sub Main() CopyColumnWOBlanks ("Sheet5") ' <-- change "Sheet5" to whatever worksheet you want the macro to run End Sub