簡體   English   中英

VBA-如果單元格不為空,則復制范圍

[英]VBA - Copy Range if cell not empty

我目前有以下代碼:

Sub createSheets(range_Copy As Range, range_Paste As Range)
    'Copy the data
    range_Copy.Copy

    'Paste the data into the new worksheet
    With range_Paste
        .PasteSpecial xlPasteValues
        .PasteSpecial xlPasteFormats
    End With
End Sub

...和這個...

Call createSheets(Sheets("Export from QB - Annual Sales").Range("E:T"), Sheets("Sales - " & Sales_Date_Annual).Range("A1"))

效果很好,但是我真正想做的是...復制范圍E:T時,我只想復制E列中沒有空值的行...不管其他行中是否有任何內容列。

我認為以下代碼將為您提供幫助。 有用的信息是,您可以使用相對引用來引用某個范圍內的單元格,即Range("D4:E6").Cells(1, 1)是對單元格D4引用。 這樣,您可以輕松遍歷給定范圍。

Sub LoppthroughRange()
Dim i As Long, j As Long, rng As Range
Set rng = Range("E:T")
For i = 1 To rng.Rows.Count
    If Not IsEmpty(rng.Cells(i, 1)) Then
        For j = 1 To rng.Columns.Count
            'copy all cells in a row
        Next
    End If
Next

End Sub

放在一起,您應該使用:

Sub createSheets(range_Copy As Range, range_Paste As Range)
    Dim i As Long, j As Long, k As Long
    k = 1

    For i = 1 To range_Copy.Rows.Count
        If Not IsEmpty(range_Copy.Cells(i, 1)) Then
            With range_Copy
                .Range(Cells(i, 1), Cells(i, .Columns.Count)).Copy
            End With
            With range_Paste
                .Range(Cells(k, 1), Cells(k, .Columns.Count)).PasteSpecial xlValues
                .Range(Cells(k, 1), Cells(k, .Columns.Count)).PasteSpecial xlFormats
            End With
            k = k + 1
        End If
    Next
End Sub

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM