Top-Themen

Aktuelle Themen (A bis Z)

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

Mitglied: winget

winget (Level 1) - Jetzt verbinden

05.02.2014, aktualisiert 11:22 Uhr, 6834 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 ..
Ähnliche Inhalte
VB for Applications
Excel VBA Code
gelöst Frage von specialuserVB for Applications2 Kommentare

Hallo zusammen, Hab hier einen Button in einer Excel mit Makros erstellt. Der Button hat die Funktion aus der ...

Microsoft Office

VBA Excel Automatisch Filtern und Zeilen vergleichen

Frage von mcflyjuleMicrosoft Office

Hallo liebe Community, ich bin neu hier und habe leider (noch) keine Kenntnisse in VBA Hab das bisher immer ...

Microsoft Office

Mit VBA: Spalten automatisch gruppieren und ausblenden

gelöst Frage von shadow-tswMicrosoft Office11 Kommentare

Huhu schönen guten Tag, ich bräuchte mal ein wenig Unterstützung: Ich habe eine Tabelle in der täglich Spalten ab ...

Microsoft Office

Excel code für automatisch zusammenzählen von Sonderzeichen

gelöst Frage von semperMicrosoft Office2 Kommentare

Ich brauche eine Formel die mir im Excel folgende Funktion erfüllt: 2 Spalten in der einen steht ein fixer ...

Neue Wissensbeiträge
Windows 10

Windows 10 on ARM: von Microsoft entfernte Info - Klartext, was nicht geht

Information von kgborn vor 1 StundeWindows 10

Windows 10 on ARM ist ja eine neue Variante, die Microsoft im Verbund mit Geräteherstellern am Markt etablieren will. ...

Microsoft
TV-Tipp: Das Microsoft-Dilemma
Information von kgborn vor 1 StundeMicrosoft1 Kommentar

Aktuell gibt es in Behörden und in Firmen eine fatale Abhängigkeit von Microsoft und dessen Produkten. Planlos agieren die ...

Windows 10
Zero-Day-Lücke in Microsoft Edge
Information von kgborn vor 2 TagenWindows 10

In Microsofts Edge-Browser klafft wohl eine nicht geschlossene (0-Day) Sicherheitslücke im Just In Time Compiler (JIT Compiler) für Javascript. ...

Sicherheit
Microsoft und Skype: Sicherheit
Information von kgborn vor 2 TagenSicherheit

Die Tage gab es ja einige Berichte zur Sicherheit des Skype-Updaters. Der Updater von Skype läuft unter dem Konto ...

Heiß diskutierte Inhalte
Windows 10
Windows 10 (1709) Tastur und Maus wieder einschalten?
Frage von LochkartenstanzerWindows 1017 Kommentare

Moin, Ich habe von einem Kunden einen Win10-Rechner bekommen, bei dem weder Tastatur noch Maus geht. Die Hardware funktioniert ...

Humor (lol)
Was könnte man mit einem Server machen? Idee gesucht
Frage von 2SeitenHumor (lol)13 Kommentare

Hey Zusammen Ich habe einen alten HP G2 Rackserver zu Hause rumliegen. 28GB Ram, 1xAMD Prozi mit etwa 2GHz. ...

Firewall
RB2011 Firewall Rule eine bestimmte Mac oder IP Adresse nicht zu blockieren
Frage von lightmanFirewall11 Kommentare

Hallo liebes Forum mit ihren Spezialisten. Ich habe meine Firewall so konfiguriert das kein Endgerät ohne meine Speziellen Erlaubnis ...

Server-Hardware
Server für Exchange 2016, Kaufberatung
Frage von MazenauerServer-Hardware10 Kommentare

Guten Tag werte Gemeinde, Vorab: Ich dachte es gab mal einen separaten Bereich für solche Anfragen, habe ich leider ...