簡體   English   中英

宏僅復制可見單元格

[英]Macro is copying only the visible cells

宏僅復制已過濾行的可見單元格,但我不使用僅復制可見單元格。 如何使我的宏復制所有單元格雖然它們在工作表中是不可見的

任何幫助是極大的贊賞

謝謝

尼科,

在這種情況下,只需復制工作表並進行兩次刪除,代碼將立即運行。 如果您的最后一行位置未知,那么我可以調整此代碼以找到真正的最后一行

Sub QuickKill()
    Application.ScreenUpdating = False
    ActiveSheet.Copy After:=Sheets(Sheets.Count)
    With ActiveSheet
        .AutoFilterMode = False
        .Rows("1:1499").Delete
        .Rows("2001:30000").Delete
    End With
    Application.ScreenUpdating = True
End Sub

如果只復制單元格值和公式(即沒有格式化)是可以接受的,則可以使用它

Sub CopyAllData()
    Dim v As Variant
    Dim rngFrom As Range
    Dim rngTo As Range

    ' set a reference to the range to be copied, eg
    Set rng = [2:8]
    ' get the data
    v = rng.Formula

    ' set a range to the desitination, eg
    Set rngTo = [8:12]
    ' put the data
    rngTo.Formula = v

End Sub

編輯
剛剛看到你對niko的評論,似乎你想要格式。 一次復制一行就可以了
我最初嘗試rngTo.Hidden = FALSE而不是rngTo.RowHeight = 15 ,但它返回錯誤,不知道為什么

Sub CopyAll()
    Dim rngFrom As Range
    Dim rngTo As Range
    Dim i As Long
    Dim sh As Worksheet
    Dim OldCalc As XlCalculation

    On Error GoTo Cleanup

    OldCalc = Application.Calculation
    Application.ScreenUpdating = False
    Application.EnableEvents = False
    Application.Calculation = xlCalculationManual

    ' set a reference to the range to be copied, eg
    Set rngFrom = [2:12]

    ' set a range to the desitination first row, eg
    Set sh = Worksheets("Sheet2")
    Set rngTo = sh.[2:2]

    ' copy each row in turn and restore the copied row height
    For i = 1 To rngFrom.Rows.Count
        rngFrom.Rows(i).Copy rngTo
        rngTo.RowHeight = 15
        Set rngTo = rngTo.Offset(1, 0)
    Next

Cleanup:
    Application.ScreenUpdating = True
    Application.EnableEvents = True
    Application.Calculation = OldCalc

End Sub

暫無
暫無

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

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