2017-01-17 3 views
0

Ich habe einen Code, der Informationen in Blatt ANAF CONTURI (Kriterien in Spalte G3 und hinunter bis G10000) filtert und kopiert die Ergebnisse (von A3: F3 und nach unten) in Blatt ANAF BANCI von C2: H2 und nach unten gehen.vba Autofilter und kopiere Ergebnisse auf ein anderes Blatt: Ich kann den richtigen Bereich nicht kopieren

Das Problem: Wenn ich in Blatt ANAF CONTURI keine Informationen nicht eingegeben zu tun in A3 kopiert nicht nichts aus dieser Reihe (auch wenn die Kriterien eine Übereinstimmung vorhanden ist und der Rest der Zellen, die aus dieser Reihe bis F3 haben Daten).

Es wäre in Ordnung gewesen, wenn dies auf Zelle B3 getan hätte, weil, wenn ich keine Daten über Zelle B3 habe, der Rest der Zeile irrelevant ist, aber nur Zelle A3 berücksichtigt.

Was ist die Lösung?

Private Sub CommandButton1_Click() 
' TRIAZA INFORMATIA INTRODUSA SI O INAINTEAZA SPRE PRELUCRARE IN ANAF BANCI 

    Application.ScreenUpdating = False 

    Sheet8.Unprotect Password:="online07" 
    Sheets("ANAF BANCI").Range("C2:H1000").ClearContents 

    With Sheets("ANAF CONTURI") '<--| reference your sheet   
    With .Range("G2", .Cells(.Rows.Count, 1).End(xlUp)) '<--| reference its column "A:G" range from row 1 down to column "A" last not empty row 

     .AutoFilter Field:=7, Criteria1:="Da" ''<--| filter referenced range on its 7th column (i.e. column "G") with "Da" values 
     If Application.WorksheetFunction.Subtotal(103, .Resize(, 1)) > 1 Then .Resize(.Rows.Count - 1, 6).Offset(1).SpecialCells(xlCellTypeVisible).Copy Destination:=Worksheets("ANAF BANCI").Range("C2") 
    End With  

    If (Sheets("ANAF CONTURI").AutoFilterMode And Sheets("ANAF CONTURI").FilterMode) Or Sheets("ANAF CONTURI").FilterMode Then 
     Sheets("ANAF CONTURI").ShowAllData 
    End If 
    End With 

    Sheet8.Range("A3:F20000").Locked = False 
    Sheet8.Protect Password:="online07" 

    ' SortareAlaZ Macro 
    ActiveWorkbook.Worksheets("- - REZULTAT ANAF - -").AutoFilter.Sort.SortFields.Clear 
    ActiveWorkbook.Worksheets("- - REZULTAT ANAF - -").AutoFilter.Sort.SortFields. _ 
     Add Key:=Range("O3:O16571"), SortOn:=xlSortOnValues, Order:=xlAscending, _ 
     DataOption:=xlSortNormal 
    With ActiveWorkbook.Worksheets("- - REZULTAT ANAF - -").AutoFilter.Sort 
     .Header = xlYes 
     .MatchCase = False 
     .Orientation = xlTopToBottom 
     .SortMethod = xlPinYin 
     .Apply 
    End With 

    Application.ScreenUpdating = True 

End Sub 
+0

Sie schrieb: „Wenn ich keine Informationen in Blatt ANAF CONTURI in A3 nicht eingegeben zu tun“: meinst du Spalte A leer? – user3598756

+0

ja. Ich benutzte am Ende einen anderen Weg, um das Gleiche zu tun, weil ich das Problem damit nicht finden konnte :) – MisterA

+0

Welche Spalte tatsächlich _always_ setzt die Daten "Länge"? – user3598756

Antwort

0

fand ich eine andere Art und Weise, das funktioniert und macht das Gleiche:

Dim src As Worksheet 
    Dim tgt As Worksheet 
    Dim filterRange As range 
    Dim copyRange As range 
    Dim lastRow As Long 

    Set src = ThisWorkbook.Sheets("ANAF CONTURI") 
    Set tgt = ThisWorkbook.Sheets("ANAF BANCI") 

    ' turn off any autofilters that are already set 
    src.AutoFilterMode = False 

    ' find the last row with data in column A 
    lastRow = src.range("B" & src.Rows.Count).End(xlUp).Row 

    ' the range that we are auto-filtering (all columns) 
    Set filterRange = src.range("A2:G" & lastRow) 

    ' the range we want to copy (only columns we want to copy) 
    ' in this case we are copying country from column A 
    ' we set the range to start in row 2 to prevent copying the header 
    Set copyRange = src.range("A3:F" & lastRow) 

    ' filter range based on column B 
    filterRange.AutoFilter Field:=7, Criteria1:="Da" 

    ' copy the visible cells to our target range 
    ' note that you can easily find the last populated row on this sheet 
    ' if you don't want to over-write your previous results 
    copyRange.SpecialCells(xlCellTypeVisible).Copy tgt.range("C2") 



      If (Sheets("ANAF CONTURI").AutoFilterMode And Sheets("ANAF CONTURI").FilterMode) Or Sheets("ANAF CONTURI").FilterMode Then 
    Sheets("ANAF CONTURI").ShowAllData 
    End If 
Verwandte Themen