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

时间:2017-02-14 09:17:18

标签: excel vba excel-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

1 个答案:

答案 0 :(得分:2)

下面的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子版仅用于测试,修改它以满足您的需求。

Sub Main()

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

End Sub