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

问题描述:

您好,我有一个简单的VBA代码,它复制一列并将其粘贴到另一列,而不包含原始列中的空单元格。它在我写的woorkbook中工作。但是我把它复制到另一个,我需要它的地方。它不止一次复制需要的单元格,并将整个列填入这些值。VBA代码在不同工作簿中的工作方式不同

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列,来自Cell“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子,只是为了测试,修改以满足您的需求。

Sub Main() 

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

End Sub