Makro zur Automatisierung des Ausblendens von Leerzeilen?

Dieses Thema Makro zur Automatisierung des Ausblendens von Leerzeilen? im Forum "Microsoft Office Suite" wurde erstellt von Ace_NoOne, 1. Okt. 2004.

Thema: Makro zur Automatisierung des Ausblendens von Leerzeilen? Hallo zusammen, ich arbeite an einer Excel-Tabelle mit ca. 1500 Zeilen und 28 Spalten. Beim Ausdrucken sind jedoch...

  1. Hallo zusammen,

    ich arbeite an einer Excel-Tabelle mit ca. 1500 Zeilen und 28 Spalten. Beim Ausdrucken sind jedoch nicht immer alle Spalten und Zeilen notwendig, also möchte ich diese ausblenden. Für die Spalten ist das kein Problem - aber bei den Zeilen ist das doch sehr viel Kleinarbeit, da nur die Zeilen ausgeblendet werden sollen, die in einer bestimmten Spalte keinen Wert haben (dort also leer sind).
    Gibt es eine Möglichkeit, wie ich diesen Vorgang des Ausblendens der->Leerzeilen' (sie sind ja nicht wirklich komplett leer, eben nur in der jeweils betroffenen Spalte) automatisieren kann?
    Könnte man das vielleicht mit einem Makro lösen - etwas in der Art IF([Wert von Zelle i|[Spalte]] == NULL) THEN [Ausblenden]? Leider kenne ich mich mit der Makro-Programmierung überhaupt nicht aus und weiß deshalb auch nicht, wie ich an die Sache rangehen soll.

    Im Voraus vielen Dank!


    UPDATE:
    Durch das Studieren aufgezeichneter Makros konnte ich mir doch ein gewisses Verständnis der Funktionsweise von Makros aneignen. Somit bin ich zu diesem Code gekommen:

    Code:
    Sub ausblenden()
    '
    ' blendet Zeilen aus, die in einer
    ' bestimmten Spalte keinen Wert haben
    '
        Spalte = C
        Zeilen = InputBox(Bitte die Anzahl der Zeilen angeben., Zeilenanzahl angeben)
        Resultat = 0
        For i = 1 To Zeilen
            Zelle = Spalte & i
            Range(Zelle).Select
            If ActiveCell.Value =  Then
                Rows(i).Select
                Hinweis = MsgBox(Zeile  & i &  wird ausgeblendet., Title:=Zeile ausblenden)-> nur zum Testen
                Selection.EntireRow.Hidden = True
                Resultat = Resultat + 1
            End If
        Next i
        Hinweis = MsgBox(Resultat &  Zeilen wurden ausgeblendet., Title:=Resultat)
    
    End Sub
    Ist das soweit okay? Es funktioniert zwar an meinem Testbeispiel, aber ich will kein Risiko eingehen (bei der->richtigen' Tabelle würden Fehler kaum entdeckt, was fatal enden könnte). Und vielleicht hat ja jemand noch Verbesserungsvorschläge (schließlich waren das meine ersten Schritte in Visual Basic)!?
     
  2. [edit]
    Da war ich ja völlig daneben mit meinem Eintrag. Keine Ahnung, was ich da gelesen habe. :(
    [/edit]
     
  3. Hi Ace_NoOne,

    im Prinzip ist das für den Anfang schon ganz gut :D

    Ich häng dir mal meine Version an. Schau Sie dir mal an.
    Wenn Du Erklärungen brauchst melde dich.

    Gruß Matjes :)

    Code:
    Option Explicit
    Sub AusblendenZeileWennZelleOhneInhalt()
      
     ->SpalteNr der Spalte, bei der die Zelle in der letzten
     ->Zeile immer gefüllt ist (z.B. Spalte ID oder lfdNr)
      Const c_Spalte_id = 1
     ->SpalteNr der Spalte mit dem Ausblendekriterium
      Const c_Spalte_Ausblenden = 3->entspricht C
     ->erste Zeile nach der überschrift
      Const c_ersteZeileNachUeberschrift = 2
      Dim z As Long, l_AnzZeilen As Long, ws As Worksheet
      
      Set ws = ActiveSheet
      
     ->Bildschirmupdate abschalten
      Application.ScreenUpdating = False
      
     ->Zeilenanzahl feststellen,
      l_AnzZeilen = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
      
      For z = c_ersteZeileNachUeberschrift To l_AnzZeilen
        If ws.Cells(z, c_Spalte_Ausblenden).Value =  Then
          ws.Rows(z).Hidden = True
        End If
      Next
      
     ->Bildschirmupdate anschalten
      Application.ScreenUpdating = False
      
      Set ws = Nothing
    End Sub
    
    Sub EinblendenAlleAusgeblendetenZeilen()
      ActiveSheet.Cells.EntireRow.Hidden = False
    End Sub
     
  4. Erstmal danke für die Antworten!

    Klexy: *lol* ;) Aber ganz so verkehrt warst du eigentlich nicht - der Link war durchaus hilfreich (wenn auch eher für mein anderes Problem)! :)

    Matjes: Vielen Dank!! (ein kleiner Fehler ist aber drin: Application.ScreenUpdating = False müsste True sein am Ende... :) )
     
  5. Hi Ace_NoOne,

    :D das ist vollkommen richtig - ist wohl beim Kopieren passiert.

    Einfach mit kleinen Problemen anfangen und wenn Du nicht weiterkommst fragen.

    So wie du das gemacht hast, Makro aufzeichnen und für die eigenen Belange modifizieren, bist Du shon auf dem richtigen Weg. So lernst Du nach und nach, was du mit den einzelnen Objekten machen kannst.

    Das Objekt-Modell ist in der VB-Excel-Hilfe erklärt - am Anfang vielleicht nicht ganz einfach zu verstehen.
    - Objekte haben Eigenschaften, die man lesen und in den meisten Fällen setzen kann (z.B. Hidden = True).
    - Objekte haben Methoden, die auf sie anwendbar sind. (z.B. Worksheets.Add)

    Neben dem Objekt-Modell gibt es die Programmierkonstrukte, wie Sub, Function, Schleifen (For , For Each, do, ...), Verzweigungen (If Then Else, Select Case).

    Ein weiterer Punkt sind Variable, deren Deklarationen (Dim, ...) und Typdefinition(Integer, String, Long, ...)

    So, das sollte als Überblick erstmal reichen ;D

    An die einzelnen Informationen kommt man am schnellsten, wenn man im VB-Editor in einem Code-Fenster das->Reizwort' (z.B. Worksheet) eintippt, markiert und F1 drückt. Dann geht das entsprechende Hilfefenster auf.

    Gruß Matjes :)


    korrigierter Makro:
    Code:
    Option Explicit
    Sub AusblendenZeileWennZelleOhneInhalt()
      
     ->SpalteNr der Spalte, bei der die Zelle in der letzten
     ->Zeile immer gefüllt ist (z.B. Spalte ID oder lfdNr)
      Const c_Spalte_id = 1
     ->SpalteNr der Spalte mit dem Ausblendekriterium
      Const c_Spalte_Ausblenden = 3->entspricht C
     ->erste Zeile nach der überschrift
      Const c_ersteZeileNachUeberschrift = 2
      Dim z As Long, l_AnzZeilen As Long, ws As Worksheet
      
      Set ws = ActiveSheet
      
     ->Bildschirmupdate abschalten
      Application.ScreenUpdating = False
      
     ->Zeilenanzahl feststellen,
      l_AnzZeilen = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
      
      For z = c_ersteZeileNachUeberschrift To l_AnzZeilen
        If ws.Cells(z, c_Spalte_Ausblenden).Value =  Then
          ws.Rows(z).Hidden = True
        End If
      Next
      
     ->Bildschirmupdate anschalten
      Application.ScreenUpdating = True
      
      Set ws = Nothing
    End Sub
    
    Sub EinblendenAlleAusgeblendetenZeilen()
      ActiveSheet.Cells.EntireRow.Hidden = False
    End Sub
     
Die Seite wird geladen...

Makro zur Automatisierung des Ausblendens von Leerzeilen? - Ähnliche Themen

Forum Datum
Excel VBA Makro zum suchen eines Textes und anschließend einen Breich zu kopieren Microsoft Office Suite 22. Jan. 2015
Word 2013 VBA: Makro aus einer anderen Datei aufrufen Microsoft Office Suite 16. Juni 2014
Excel VBA Makro zum suchen und markieren von Zeilen die ein bestimmtes Wort enthalten Microsoft Office Suite 16. Juni 2014
Excel: Makro ASCII verschieben Windows XP Forum 8. Nov. 2013
Makros und anderes - Excel Microsoft Office Suite 15. März 2013