Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Leere Zeilen beim Drucken automatisch ausblenden - mit VBA Code Excel

Frage Microsoft Microsoft Office

Mitglied: winget

winget (Level 1) - Jetzt verbinden

05.02.2014, aktualisiert 11:22 Uhr, 5745 Aufrufe, 9 Kommentare, 4 Danke

Hallo zusammen,
folgendes Szenario:

z.B. im Bereich A1:Z2 sind feste Daten (Kopfzeilen bzw. Kopfbereich)
Im Bereich A3:Z100 sind variable Daten. Zeile 101 sind die Summen. Es kann passieren, dass z.B. zwischen Zeile 50 und 100 keine Daten vorkommen. Natürlich kann man diese Daten mit dem Filter ausblenden - aber leider gibt es manchmal Fälle (Hektik, Stress etc), wo man vergisst, diese Zeilen auszublenden und man hat schnell auf dem Druckknopf gedruckt und dann kommen schon ein paar mehr Blätter raus, die man nicht wollte (einfache Papierverschwendung).

Hat jemand eine Idee, wie so eine Tabellenblatt-Code aussehen kann. Ich habe im Netz Macros gefunden, aber die Voraussetzung dafür ist, dass dieser Markro auch gestartet wird (das kann man aber direkt mit dem Filter machen).

Vielen Dank im Voraus
Mitglied: colinardo
05.02.2014, aktualisiert um 12:42 Uhr
Hallo winget,
folgenden Code im VBA-Editor in DieseArbeitsmappe einfügen:
(In Zeile 8 musst du den Namen des ListObjects also den Namen deiner Tabelle angeben [dies ist nicht der Name des Sheets !!])
Der Code benutzt als Referenz ob eine Zeile leer ist die erste Spalte der Tabelle. Dies lässt sich mit dem Parameter Field in Zeile 9 steuern. Die Filterung der Tabelle wird immer automatisch vor dem Drucken durchgeführt. Lass dich von der Druckvorschau nicht täuschen, die Filterung wird erst gemacht wenn du auf Drucken klickst.
01.
Private Sub Workbook_BeforePrint(Cancel As Boolean) 
02.
    FilterEmpty 
03.
End Sub 
04.
 
05.
Sub FilterEmpty() 
06.
    Dim ws As Worksheet, dt As ListObject 
07.
    Set ws = Worksheets(1) 
08.
    Set dt = ws.ListObjects("MeineTabelle") 
09.
    dt.Range.AutoFilter Field:=1, Criteria1:="<>" 
10.
End Sub
Grüße Uwe
Bitte warten ..
Mitglied: winget
05.02.2014, aktualisiert um 14:35 Uhr
Hi Uwe,
ich bekomme immer die Meldung "Index außerhalb des gültigen Bereichs" - genau in der Zeile 8.
So ich habe folgendes gemacht. > z.B. meine Tabelle heißt "2014.xls" mein Arbeitsblatt (Worksheet1) heißt "Januar".
Ich habe dein Code wie du mir gesagt hast bei VBAProject>Microsoft Excel Objekte>DieseArbeismappe eingefügt. Der Code sieht wie folgt aus:

01.
Private Sub Workbook_BeforePrint(Cancel As Boolean) 
02.
    FilterEmpty 
03.
End Sub 
04.
 
05.
Sub FilterEmpty() 
06.
    Dim ws As Worksheet, dt As ListObject 
07.
    Set ws = Worksheets(1) 
08.
    Set dt = ws.ListObjects("2014") 
09.
    dt.Range.AutoFilter Field:=1, Criteria1:="<>" 
10.
End Sub
Spaßeshalber habe ich in der Zeile 8 auch mit 2014.xls und auch Januar versucht. So:
01.
    Set dt = ws.ListObjects("2014.xls")
und so:
01.
    Set dt = ws.ListObjects("Januar")
Ich bekomme immer wieder die Meldung "Index außerhalb des gültigen Bereichs"!

Beim Dubuggen wird immer die Zeile 8 markiert!

Gruß
Paul
Bitte warten ..
Mitglied: colinardo
05.02.2014, aktualisiert um 14:38 Uhr
Das sind die falschen Namen!!, ich meinte diesen, wenn deine Tabelle markiert ist:

0e4d62fb94a518eef81fc5f369798496 - Klicke auf das Bild, um es zu vergrößern
Bitte warten ..
Mitglied: winget
05.02.2014 um 15:23 Uhr
Ich habe leider immer noch Excel2003. Deswegen habe ich dir auch einen Screenshot von meiner Tabelleneigenschaften.
Vielleicht kommen wir so auf dem gleichen Nenner:

2a2ca98ad64eeade3090dcceeb4ba1de - Klicke auf das Bild, um es zu vergrößern
Bitte warten ..
Mitglied: colinardo
05.02.2014, aktualisiert um 19:35 Uhr
Du verstehst noch nicht was ein ListObject ist, das sind Tabellen mit Spaltenfiltern und Sonderfunktionen. Der Name solch eines ListObject ist in Excel 2003 noch nicht so einfach erreichbar. Wenn du den Namen nicht kennst und es das einzigste ListObject im Sheet ist geht auch folgende Variante:
Set dt = ws.ListObjects(1) 
Eine Liste erzeugt man indem man einen Bereich in einerm Sheet markiert und dann über Rechtsklick > Liste erstellen aus einem normalen Bereich eine Liste erstellt.

Hier ein Sheet als Demo dazu: Demo-Sheet

Grüße Uwe
Bitte warten ..
Mitglied: winget
05.02.2014 um 16:20 Uhr
Ok....Jetzt habe ich endlich kappiert was du meinst und es funktioniert auch. Super..Danke!!!
Bitte warten ..
Mitglied: winget
21.02.2014 um 16:25 Uhr
Hi Uwe,
ich hatte diese Sache bereits als gelöst markiert und es funktioniert soweit wunderbar.
Leider funktioniert der Code nur für ein Worksheet. Ich habe mehrere Möglichkeiten probiert, aber leider funktioniert nur für ein Worksheet.

Gibt es eine Möglichkeit, wenn man mehrere Sheets (Arbeitsblätter) hat? Wie gesagt ich arbeite noch mit Excel2003. Wahrscheinlich ist einfacher als ich mir vorstelle.

Viele Dank im Voraus
Bitte warten ..
Mitglied: colinardo
21.02.2014, aktualisiert um 16:33 Uhr
Mach in allen Tabellenblättern die du filtern willst jeweils aus den Bereichen ein Liste wie oben bereits mehrfach geschrieben
dann nehme folgenden Code um z.B die Sheets 1-3 zu filtern (lässt sich in Zeile 7 festlegen)
01.
Private Sub Workbook_BeforePrint(Cancel As Boolean) 
02.
    FilterEmpty 
03.
End Sub 
04.
 
05.
Sub FilterEmpty() 
06.
  Dim ws As Worksheet, dt As ListObject   
07.
  for i = 1 to 3 
08.
    Set ws = Worksheets(i) 
09.
    Set dt = ws.ListObjects(1) 
10.
    dt.Range.AutoFilter Field:=1, Criteria1:="<>" 
11.
  Next 
12.
End Sub
Grüße Uwe
Bitte warten ..
Mitglied: winget
21.02.2014 um 16:40 Uhr
Super!
einfacher als ich dachte!
Vielen Dank!
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
Microsoft Office
Kreuztabelle Access + VBA Code (7)

Frage von Dr.Cornwallis zum Thema Microsoft Office ...

Outlook & Mail
gelöst Ganztägier Outlooktermin per VBA aus Excel versenden (8)

Frage von Piotor04 zum Thema Outlook & Mail ...

Heiß diskutierte Inhalte
Windows Server
DHCP Server switchen (22)

Frage von M.Marz zum Thema Windows Server ...

Hardware
gelöst Negative Erfahrungen LAN-Karten (19)

Frage von MegaGiga zum Thema Hardware ...

SAN, NAS, DAS
gelöst HP-Proliant Microserver Betriebssystem (14)

Frage von Yannosch zum Thema SAN, NAS, DAS ...

Grafikkarten & Monitore
Win 10 Grafikkarte Crash von Software? (13)

Frage von Marabunta zum Thema Grafikkarten & Monitore ...