2017-02-14 15 views
0

こんにちは私は単純な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 

答えて

2

Subは以下列Dから(セルの値を有する)式をコピーし、(空白なし)ダウン細胞「F5」から始まって、列Fにその値を貼り付けます。

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 
関連する問題