2011-10-20 76 views
4

宏只複製已過濾行的可見單元格,儘管我並未使用它來僅複製可見單元格。如何讓我的宏所有的細胞複製,雖然他們在片宏只複製可見單元格

任何幫助是極大的讚賞

感謝

+2

取下過濾器,然後複製。 – Reafidy

+0

@Reafidy我很感激你的幫助,但條件是,宏應該不會改變過濾器設置。並且工作表不應該被宏過濾掉,如果即使未被宏過濾以進行復制,它也會像以前一樣恢復,但是當我們設置autofiltermode = false時,它不可能返回過濾器。 – niko

+0

請幫助我這些如何複製,即使他們是無形的,而不改變過濾器設置,以及我想到的變種,但問題是一些單元格有背景顏色和變種只挑選數據但不是顏色,所以我不知道該怎麼辦 ! – niko

回答

1

尼科,

在這種情況下,只需複製該工作表並進行兩次刪除,代碼將立即運行。如果你的最後一排的位置是未知的話,我可以調整這個代碼找到真正的最後使用的排

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 
0

如果這是可以接受只複製單元格值和公式(即無格式invisble )你可以使用這個

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 

編輯
剛剛看到您的評論對尼科,看來你也想要格式。一次複製一行的伎倆
我最初嘗試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 
+0

當你得到2000行復制每一行,是一個耗時的過程是不是? – niko

+0

@niko肯定是!雖然有辦法改善它,但我會編輯它以包含它們 –

相關問題