Live-Forum - Die aktuellen Beiträge
Datum
Titel
17.04.2024 18:57:33
17.04.2024 16:56:58
Anzeige
Archiv - Navigation
1504to1508
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

sichtbare Zellen/ eingeblendetene Blättern kopie

sichtbare Zellen/ eingeblendetene Blättern kopie
22.07.2016 10:56:28
Hase
Hallo Zusammen,
vielleicht kann mir einer auf die Sprünge helfen.
Ich bastle gerade einen VBA Code, der in einer Arbeitsmappe alle Zeilen, die in Spalte F ein "x" enthalten, in ein separates Blatt kopiert.
Code funktioniert soweit einwandfrei, nur jetzt möchte ich, dass er
a) nur eingeblendete Tabellenblätter berücksichtigt
b) nur sichtbare Zellen. In den einzelnen Tabellenblättern sind nämlich Autofilter gesetzt.
Das Ein- und Ausblenden der Blätter sowie die Autofilter werden vorher vom Benutzer über eine UserForm aktiviert.
Hab's schon über SpecialCells.Copy.. probiert, bekomm damit aber nicht die Schleife über alle Blätter hin und das Einfügen in die erste freie Zeile.
Hier mal der Code-Abschnitt bei dem ich nicht weiter komme:

Dim sh1 As Worksheet
Dim myRow As Long
Dim myLastRow As Long
Dim n As Long
Application.ScreenUpdating = False
n = Worksheets("Test").Cells(Rows.Count, 6).End(xlUp).Row + 1     ' letzte gefüllte Zeile in  _
Tab TEST finden
If n  "Test" Then                                      '
For myRow = 2 To myLastRow
If (UCase(sh1.Cells(myRow, 6).Value)) = UCase("x") Then   ' wenn in Spalte 6 ein "x"  _
steht , dann kopiere
' ganze Reihe und in letzte  _
gefüllte Zelle von Tabellenblatt TEST
' einfügen
sh1.Rows(myRow).Copy
Sheets("Test").Rows(n).PasteSpecial Paste:=xlValues
n = n + 1                                               'Zähler erhöhen
End If
Next myRow
End If
Next
Sheets("Test").Select
ActiveSheet.Columns("A:X").WrapText = True
Application.ScreenUpdating = True
MsgBox "Fertig!"

Vielen lieben Dank!

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: sichtbare Zellen/ eingeblendetene Blättern kopie
22.07.2016 11:36:32
UweD
Hallo
- per VBA einen zusätzlichen Filter setzen,
- dann kopieren, einfügen
- den zusätzlichen Filter zurücksetzen.
Wenn du eine Beispielmappe hochlädst, bau ich was zusammen
Gruß UweD
AW: sichtbare Zellen/ eingeblendetene Blättern
22.07.2016 13:26:24
Hase
Hallo UweD,
vielen Dank!
schau mal ich hab hier eine Beispiel Datei
https://www.herber.de/bbs/user/107174.xlsm
Code funktioniert ja soweit.. nur sucht er leider auch die ausgeblendeten Blätter durch.
Hab jetzt in Blatt A und C den Filter manuell gesetzt, Blatt B ist ausgeblendet. Im Blatt Test soll er mir dann aus den gefilterten Blättern alle Zeilen zurück geben , die in Spalte F ein x haben.
Viele Grüße
Hase
Anzeige
AW: sichtbare Zellen/ eingeblendetene Blättern
22.07.2016 13:32:50
EtoPHG
Hallo Hase,
Bau ein if-Konstrukt um das Auslesen:
...
If sh1.Name  "Test" Then                                      '
If sh1.Visible = xlSheetVisible Then
For myRow = 2 To myLastRow
Next myRow
End If
End If
Gruess Hansueli
AW: sichtbare Zellen/ eingeblendetene Blättern
22.07.2016 13:56:38
Hase
Hallo Hansuli..
Top Danke, genau das wars...
Hab ich mal wieder den Wald vor lauter Bäumen nicht gesehen, so einfach kanns sein :)
Grüße
Hase
AW: sichtbare Zellen/ eingeblendetene Blättern
22.07.2016 15:26:03
UweD
Hallo
sorry bin erst gerade wieder dazu gekommen nachzuschauen..
Mein Vorschlag mit dem zusätzlichen Filter.
- copieren auf einen Rutsch und nicht zeilenweise
Private Sub cmd_Start_Click()
    Dim sh1 As Worksheet
    Dim myRow As Long
    Dim myLastRow As Long
    Dim n As Long
    Application.ScreenUpdating = False
    For Each sh1 In ActiveWorkbook.Worksheets ' Schleife über alle Tabellenblätter 
        If sh1.Visible = True And sh1.Name <> "Test" Then
            myLastRow = sh1.Range("F" & sh1.Rows.Count).End(xlUp).Row
            n = Worksheets("Test").Cells(Rows.Count, 6).End(xlUp).Row + 1
            If n < 4 Then n = 4
            With sh1.Range("$A$2:$V$" & myLastRow)
                .AutoFilter Field:=6, Criteria1:="=x"
                If WorksheetFunction.CountIf(sh1.Range(sh1.Cells(3, 6), _
                    sh1.Cells(myLastRow, 6)), "x") > 0 Then
                        sh1.Range("$A$3:$V$" & myLastRow).Copy
                        Sheets("Test").Cells(n, 1).PasteSpecial Paste:=xlValues
                End If
                .AutoFilter Field:=6
            End With
        End If
    Next
    Sheets("Test").Select
    ActiveSheet.Columns("A:X").WrapText = True
    
    Application.ScreenUpdating = True
    MsgBox "Fertig!"
End Sub

VBA/HTML-CodeConverter, AddIn für Office 2002-2016 - in VBA geschrieben von Lukas Mosimann. Projektbetreuung:RMH Software & Media

Code erstellt und getestet in Office 15 - mit VBAHTML 12.6.0

Gruß UweD
Anzeige

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige