2013-12-16 83 views
2

在表1的A列中,我需要以每個350個單元複製3000個單元格。我目前的宏正在複製一切正常,直到我到最後,它複製空白。有沒有辦法在我的宏中包含「單元格是空白什麼都不做」的代碼?如何複製範圍並省略空白單元格?

對不起,如果這聽起來沒有教養,我只是開始學習宏。 這是當前宏觀的副本,宏的其餘部分是相同的,因爲這只是越來越多的由350

Sub Copy_Bins_1_350() 
    If Range("D12").Value <> "!" Then 
     Exit Sub 
    ElseIf Range("D12").Value = "!" Then 
     Sheets("sheet1").Select 
     Range("B2:B351").Select 
     Selection.Copy 
     Range("B2").Select 
     Sheets("sheet2").Select 
     Range("E12").Select 
     With Selection.Font 
      .ColorIndex = xlAutomatic 
      .TintAndShade = 0 
     End With 
    End If 
End Sub 

回答

0

您可以使用Union,形成自己的一系列非空單元格,然後複製他們。

而且INTERESTING READ

試試這個(久經考驗

Sub Sample() 
    Dim wsI As Worksheet, wsO As Worksheet 
    Dim aCell As Range, rngCopyFrom As Range, rng As Range 
    Dim lRow As Long 

    Set wsI = ThisWorkbook.Sheets("BIN LIST PASTE") 
    Set wsO = ThisWorkbook.Sheets("BIN LIST COPY") 

    Set rng = wsI.Range("B2:B351") 

    For Each aCell In rng 
     If Len(Trim(aCell.Value)) <> 0 Then 
      If rngCopyFrom Is Nothing Then 
       Set rngCopyFrom = aCell 
      Else 
       Set rngCopyFrom = Union(rngCopyFrom, aCell) 
      End If 
     End If 
    Next 

    If Not rngCopyFrom Is Nothing Then _ 
    rngCopyFrom.Copy wsO.Range("E12") 

    With wsO 
     lRow = .Range("E" & .Rows.Count).End(xlUp).Row 

     Set rng = .Range("E12:E" & lRow) 

     With rng.Font 
      .ColorIndex = xlAutomatic 
      .TintAndShade = 0 
     End With 
    End With 
End Sub 
+0

感謝您的答覆,但是,這種複製了我的信息到另一個頁面,在這裏,我只需要它只是複製了我一切只是空的。我正在複製的東西將被粘貼到整個其他程序中,如果有空白,這個程序會混亂。我也試着搞砸它,並閱讀你的鏈接,它非常有趣,謝謝你提供給我。 我正在考慮沿着選擇範圍的方向使用一些東西,並在其中放入一個If:Then命令。例如。如果空白,則不要複製。或者那個口徑的東西。我只是不知道如何使它成爲excel語言 – Forbidden

+0

是的,它會將它複製到'BIN LIST COPY'表單。你不想複製它嗎? –

+0

實際上沒有,即使頁面的標題是這樣的,我真的只需要複製的箱子將它們粘貼到其他程序中。 – Forbidden

相關問題