Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Druckbereich auf Autofilterergebnis definieren
#1
Hallo zusammen,

ich möchte in ein Makro gerne die Funktion einfügen, dass nur Zeilen gedruckt, die aus einem Autofilter resultieren.

Hierzu habe ich die gleb geschriebene Zeile eingefügt. Leider gibt es hier aber eine Fehlermeldung.

Kann mir hier jemand weiter helefen? Danke sehr!


Selection.AutoFilter
    Range("A11:AC1500").Select
    Selection.AutoFilter

    ActiveSheet.Range("$A$11:$AC$1500").AutoFilter Field:=2, Criteria1:=Array( _
        "-", "offen", "vor Beginn", "ZF Ende", "Ende ZF", "="), Operator:=xlFilterValues
        
    Selection.SpecialCells(xlCellTypeVisible).EntireRow.Address
    
    Dim MyMessage As Object, MyOutApp As Object
    Dim SavePath As String
    Dim AWS As String

--> geht dann weiter mit Versand pdf-Datei aus Outlook ...
Antworten Top
#2
Hi,

probier es mal so.


Code:
Sub NurSichtbareDrucken()
Dim Bereich As Range

With Tabelle1
    If .FilterMode = True Then
    
        Set Bereich = .Range("A11").CurrentRegion
        Bereich.PrintOut
    
    End If
End With
End Sub

Gruß
Ich
Antworten Top
#3
(29.08.2016, 11:36)IchBinIch schrieb: probier es mal so.

Hi Du,

ich habe "Tabelle1" natürlich ersetzt durch die Bezeichnung "Masterliste" meines Sheets.

Leider bringt er mir aber eine Fehlermeldung. Im Debugger wird If.FilterMode = True Then markiert.
Code:
If .FilterMode = True Then
Antworten Top
#4
Hi,

verwende Deinen Code oben und statt Deiner gelben Codezeile fügst Du


Code:
Call NurSichtbareDrucken

ein.

Gruß
Ich
Antworten Top
#5
... und noch etwas ist mir gerade aufgefallen.

Du willst den Druckbereich festelegen und nicht drucken! Was mein kleines Macro macht. Das hatte ich überlesen. Sorry dafür:

Also wie forlgt.

Code:
Sub NurSichtbareAlsDruckbereich()
Dim Bereich As Range

With Sheets("Masterliste")
   If .FilterMode = True Then
   
       Set Bereich = .Range("A11").CurrentRegion
       .PageSetup.PrintArea = Bereich
   
   End If
End With
End Sub

Gruß
Ich
Antworten Top
#6
Das bringt leider nichts!

Fehler beim Kompilieren: Sub oder Function nicht definiert

VG
Stefan
Antworten Top
#7
(29.08.2016, 10:52)StefanGruber_LA schrieb: ...


Selection.AutoFilter
    Range("A11:AC1500").Select
    Selection.AutoFilter

    ActiveSheet.Range("$A$11:$AC$1500").AutoFilter Field:=2, Criteria1:=Array( _
        "-", "offen", "vor Beginn", "ZF Ende", "Ende ZF", "="), Operator:=xlFilterValues
        
    Selection.SpecialCells(xlCellTypeVisible).EntireRow.Address
    
    Dim MyMessage As Object, MyOutApp As Object
    Dim SavePath As String
    Dim AWS As String

--> geht dann weiter mit Versand pdf-Datei aus Outlook ...

Ich bin davon ausgegangen, Du hättest oben nur einen Codeauszug eingefügt. Das scheint aber nicht der Fall zu sein.
In Deinem Code oben fehlt mind. ein
Code:
Sub xxx()

'Der eigentliche Code

End Sub


Stell doch bitte einmal Deinen kompletten Code ein.

Gruß
Ich

Ergänzung:
Oder besser noch (D)eine Beispieldatei mit anonymisierten Daten.
Antworten Top
#8
Das ist der gesamte Code! Das Sheet kann ich leider nicht einfügen, da hier sensible Daten enthalten sind.

VG
Stefan

Private Sub CommandButton3_Click()

    ActiveSheet.Unprotect "abc"
    
    Selection.AutoFilter
    Range("A11:AC1500").Select
    Selection.AutoFilter

    ActiveSheet.Range("$A$11:$AC$1500").AutoFilter Field:=2, Criteria1:=Array( _
        "-", "offen", "vor Beginn", "ZF Ende", "Ende ZF", "="), Operator:=xlFilterValues
    
    Call NurSichtbareDrucken
    
    Dim MyMessage As Object, MyOutApp As Object
    Dim SavePath As String
    Dim AWS As String
    
    AWS = "Z:\Prj\S\StructKurt\Masterlisten\Masterliste.pdf"

    'InitializeOutlook = True
    Set MyOutApp = CreateObject("Outlook.Application")
    'Nachrichtenobject erstellen
    Sheets("Masterliste").ExportAsFixedFormat Type:=xlTypePDF, Filename:="Z:\Prj\S\StructKurt\Masterlisten\Masterliste.pdf", _
        Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
    Set MyMessage = MyOutApp.CreateItem(0)
    With MyMessage
        .To = "alle"
        .Subject = "Masterliste" & " " & Date & " " & Time
        'Hier wird die temporär gespeicherte Datei als
        'Attachment zugefügt
        .attachments.Add AWS
        'Hier wird eine normale Text Mail erstellt
        'Hier wird die HTML Mail erstellt
        .HTMLBody = "Hallo zusammen," & _
        "

" & _
        "anbei die tägliche Masterliste." & _
        "

" & _
        "Gruß" & _
        "

" & _
        "Team alle"
        
        'Hier wird die Mail nochmals angezeigt
        .display
        'Hier wird die Mail gleich in den Postausgang gelegt
        '.Send
        'Hier wird die temporäre Datei wieder gelöscht
        Kill AWS
        
    Selection.AutoFilter
    Range("A11:AC1500").Select
    Selection.AutoFilter
    
    ActiveWorkbook.SaveCopyAs "Z:\Prj\S\StructKurt\Masterlisten\ " & ActiveSheet.Name & "_" & Format(Now, "yymmdd_hhmm") & ".xlsm"
    
    Range("F12:F1500").Copy
    Range("G12").PasteSpecial Paste:=xlValues
    Application.CutCopyMode = False
    
    ActiveSheet.Range("$A$11:$AC$1500").AutoFilter Field:=2, Criteria1:=Array( _
    "-", "offen", "vor Beginn", "ZF Ende", "Ende ZF", "="), Operator:=xlFilterValues
    
    Range("D1").Select
    
    End With
    
        Dim wsh As Worksheet
    
            Password = "abc"
            Contents = False
            AllowFormattingCells = False
            AllowFormattingColumns = False
            AllowFormattingRows = False
            AllowInsertingColumns = False
            AllowInsertingRows = False
            AllowInsertingHyperlinks = True
            AllowDeletingColumns = False
            AllowDeletingRows = False
            AllowSorting = True
            AllowFiltering = True
            AllowUsingPivotTables = False
            AllowFormattingObjects = True
    
    ActiveWorkbook.Save

End Sub
Antworten Top
#9
Hallo Stefan,

dann teste das bitte einmal:



Code:
Option Explicit
Sub AutoFilterEinschalten()
Dim Filterrange As Range

With Sheets("Masterliste")
Set Filterrange = .Range("A11:AC1500")
   
   If Not .AutoFilterMode = True Then
       .Range("A11").AutoFilter
   End If
 
Filterrange.AutoFilter Field:=2, Criteria1:=Array("-", "offen", "vor Beginn", "ZF Ende", "Ende ZF", "="), Operator:=xlFilterValues
   
End With

Call NurSichtbareAlsDruckbereich

End Sub

Sub NurSichtbareAlsDruckbereich()
Dim Bereich As Range

With Sheets("Masterliste")
  If .FilterMode = True Then
 
      Set Bereich = .Range("A11").CurrentRegion
      .PageSetup.PrintArea = Bereich.Address
 
  End If
End With
End Sub



Den Rest Deiner Codes musst Du dann wieder einfügen. Das habe ich auch nicht getestet.
Es sei mir noch eine Randbemerkung gestattet.
Variablen dimensioniert man immer am Anfang einer Prozedur. Das macht die ganze Geschichte etwas übersichtlicher.

Gruß
Ich
[-] Folgende(r) 1 Nutzer sagt Danke an IchBinIch für diesen Beitrag:
  • StefanGruber_LA
Antworten Top
#10
Hallo Stefan,

mal zur Ursache von Fehlern. Wenn es einen oder mehrere gibt, ist zur Analyse wichtig, welche und wo sie aufgetreten sind.

Mal unabhängig davon ob die Zeile gebraucht wird - Du hast diesen Code ganz alleine für sich stehen,
Selection.SpecialCells(xlCellTypeVisible).EntireRow.Address
und Excel weiß nicht, wo es das Ergebnis hinpacken soll.

Daher kommt auch in dieser Zeile ein "Fehler 438, Objekt unterstützt diese Eigenschaft oder Methode nicht". Korrekt wäre, dass Du das Ergebnis z.B. einer Variable zuweist, z.B.
strVisAddr = Selection.SpecialCells(xlCellTypeVisible).EntireRow.Address
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste