2013-08-23 99 views
0

請告訴我如何改變我的代碼來選擇行,只有當他們在BC列中的值(忽略完整的行,如果在BC列單元格爲空白):跳過行與特定列空白單元格

Private Sub CommandButton3_Click() 
    Range("A:a,b:b,c:c,e:e,bc:bc").Select 
    Selection.Copy 
    Workbooks.Add   
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=True, Transpose:=False 
    Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, SkipBlanks:=True, Transpose:=False 
End Sub 
+0

你想忽略列#11如果兩個B11和C11是空的或忽略列# 11如果B11或C11是空白的? –

+0

我想忽略完整的行,如果BC3是空白 –

回答

0

首先按原樣運行您的代碼。

Sub dural() 
    Dim N As Long, I As Long, r As Range 
    N = Cells(Rows.Count, "BC").End(xlUp).Row 
    For I = N To 1 Step -1 
     Set r = Cells(I, "BC") 
     If IsEmpty(r) Then 
      r.EntireRow.Delete 
     End If 
    Next 
End Sub 
+0

確定它會刪除有關其他過濾器的空白行,但什麼@tigeravatar –

+0

私人小組CommandButton3_Click() 昏暗wsData作爲工作表 昏暗wsNew作爲工作表 設置wsData = ActiveSheet 設置wsNew = Sheets.Add 隨着相交(wsData.UsedRange,wsData.Columns( 「BK」)) .Parent.AutoFilterMode =假 .AutoFilter 1中, 「<>」 相交(.SpecialCells(xlCellTypeVisible).EntireRow ,wsData.Range(「A:A,B:B,F:F,I:I,H:H,BK:BK」))複製 wsNew.Range(「A1」)。PasteSpecial xlPasteValues wsNew.Range( 「A1」)。PasteSpecial的xlPasteFormats .AutoFilter 結束隨着 wsNew.Move 集wsData =無 集wsNew =無 結束子 –

+0

私人小組CommandButton3_Click() 昏暗wsData作爲工作表 暗淡wsNew作爲工作表 集wsData = ActiveSheet 集wsNew = Sheets.Add 隨着相交(wsData.UsedRange,wsData.Columns( 「BK」)) .Parent.AutoFilterMode =假 .AutoFilter 1中, 「<>」 相交(.SpecialCells(xlCell TypeVisible).EntireRow,wsData.Range(「A:A,B:B,F:F,I:I,H:H,BK:BK」))複製 wsNew.Range(「A1」)。PasteSpecial xlPasteValues wsNew.Range( 「A1」)。PasteSpecial的xlPasteFormats .AutoFilter 結束隨着 wsNew.Move 集wsData =無 集wsNew =無端子 進一步過濾柱BL日期當前月份或先前月份然後BM掛起/ RESOLV –

0

您可以通過使用過濾器做到這一點:通過取消選中

  1. 對BC柱過濾器(空白)
  2. 複製的列
  3. 然後在添加工作簿中執行的行刪除粘貼到新的工作表或工作簿中

如果必須是VBA,這裏有兩個代碼將根據需要執行。 這第一個代碼使用自動篩選:

Private Sub CommandButton3_Click() 

    Dim wsData As Worksheet 
    Dim wsNew As Worksheet 

    Set wsData = ActiveSheet 
    Set wsNew = Sheets.Add 

    With Intersect(wsData.UsedRange, wsData.Columns("BC")) 
     .Parent.AutoFilterMode = False 
     .AutoFilter 1, "<>" 
     Intersect(.SpecialCells(xlCellTypeVisible).EntireRow, wsData.Range("A:A,B:B,C:C,E:E,BC:BC")).Copy 
     wsNew.Range("A1").PasteSpecial xlPasteValues 
     wsNew.Range("A1").PasteSpecial xlPasteFormats 
     .AutoFilter 
    End With 

    wsNew.Move 

    Set wsData = Nothing 
    Set wsNew = Nothing 

End Sub 

這第二,替代代碼使用了查找循環:

Private Sub CommandButton3_Click() 

    Dim rngFound As Range 
    Dim rngCopy As Range 
    Dim strFirst As String 

    Set rngFound = Columns("BC").Find("*", Cells(Rows.Count, "BC"), xlValues, xlWhole) 
    If Not rngFound Is Nothing Then 
     strFirst = rngFound.Address 
     Set rngCopy = rngFound 
     Do 
      Set rngCopy = Union(rngCopy, rngFound) 
      Set rngFound = Columns("BC").Find("*", rngFound, xlValues, xlWhole) 
     Loop While rngFound.Address <> strFirst 
    End If 

    If Not rngCopy Is Nothing Then 
     Sheets.Add 
     Intersect(rngCopy.Parent.Range("A:A,B:B,C:C,E:E,BC:BC"), rngCopy.EntireRow).Copy 
     Range("A1").PasteSpecial xlPasteValues 
     Range("A1").PasteSpecial xlPasteFormats 
     ActiveSheet.Move 
    End If 

    Set rngFound = Nothing 
    Set rngCopy = Nothing 

End Sub 
+0

非常感謝第一個工作... –

+0

嗨,我是另一個問題的結果...參考第一個程序,如果我想在BC之後用另一列進一步過濾,我想用BD這是日期列過濾它。我想與當月和前一個月來過濾....然後我想是具有議決及正在申請的2個值來過濾它.... PLZ幫助 –

+0

私人小組CommandButton4_Click() 昏暗wsData作爲工作表,wsNew作爲工作表,usrname usrname =用Ucase(ENVIRON( 「用戶名」)) 集wsData = ActiveSheet 集wsNew = Sheets.Add wsNew.Name = 「測試」 隨着相交(wsData.UsedRange,wsData.Columns( 「BK」) ) .Parent.AutoFilterMode = False .AutoFilter 1,「<>」 Intersect(.SpecialCells(xlCellTypeVisible).EntireRow,wsData.Range(「E:E,F:F,G:G,A:A,BK :BK,BL:BL,BN:BN,博:博 「))複製 wsNew.Range(」 A1 「)。PasteSpecial的xlPasteValues wsNew.Range(」 A1" ).PasteSpecial xlPasteFormats .AutoFilter 尾隨着 wsNew.Move 設置wsData =無 設置wsNew =無 結束小組 –

相關問題