Microsoft Excel

Herbers Excel/VBA-Archiv

Ausblenden von Zeilen


Betrifft: Ausblenden von Zeilen
von: Kevin
Geschrieben am: 06.12.2018 16:00:54

Hallo

könnte mir das folgende Makro jemand umschreiben, damit ich es auf verschiedenenen Tabellenblättern verwenden kann? Wäre sehr nett von euch

Sub Zelle_Ausblenden()

'Ausblenden bzw Zeilenhöhe minimal einstellen von Mitarbeiterzeilen, die nicht verwendet werden
Dim i As Integer
Dim Zelle As Range

    ActiveSheet.Unprotect Password:="meier"
        With Application
           .Calculation = xlCalculationManual
         For i = 15 To 60 Step 9
           For Each Zelle In Cells(i, 2).Resize(8)
               Zelle.EntireRow.RowHeight = 0.5 - 14.5 * (Zelle > 0)
           Next Zelle
         Next i
           .Calculation = xlAutomatic
        End With
    ActiveSheet.Protect AllowInsertingHyperlinks:=True, userinterfaceonly:=True, AllowSorting:= _
False, DrawingObjects:=True, AllowFiltering:=False, Contents:=True, Password:="meier"
    ActiveSheet.EnableOutlining = True
    Set Zelle = Nothing
End Sub

  

Betrifft: AW: Ausblenden von Zeilen
von: Daniel
Geschrieben am: 06.12.2018 16:10:04

Hi

das Makro sollte eigentlich immer die Zellen des gerade aktiven Tabellenblatts bearbeiten.
dazu muss es aber in einem allgemeinen Modul stehen.

steht das Makro in einem Tabellenblattmodul und soll dort auch bleiben, müsstest du folgendes tun, um es auch für andere Tabellenblätter verwenden zu können (was dann aber dem zugedachten Sinn eines Tabellenblattmoduls widerspricht):

Vor allen Zellbezügen "ActiveSheet" ergänzen (in Tabellnblattmodulen werden Range und Cells ohne Tabellenblattangabe auf das Tabellenblatt des Moduls referenziert, nicht auf das aktive Blatt:

 For Each Zelle In ActiveSheet.Cells(i, 2).Resize(8)
möchtest du das Makro dann aufrufen, müsstest du den Modulnamen voranstellen:
Call TabelleX.Zelle_Ausblenden

Gruß Daniel


  

Betrifft: AW: Ausblenden von Zeilen
von: Kevin
Geschrieben am: 06.12.2018 16:16:33

Ich würde das Makro gerne im Workbook_Open durchlaufen lassen, dass ich es nicht jedesmal beim Aktivieren laufen lassen muss. Hintergrund: Es haut mir meine Gruppierungen durcheinander, die am Anfang gesetzt werden.... Da blendet sich nichts mehr aus dann... Deswegen war mein Gedanke: Am Anfang einmal laufen lassen reicht


  

Betrifft: AW: Ausblenden von Zeilen
von: Daniel
Geschrieben am: 06.12.2018 16:24:50

Dann musst du folgendes ergänzen:

Dim WS as WorkSheet

For each WS in ThisWorkbook.Worksheets
    Hier der Makrocode
Next


Im Makrocode musst du dann jedes "ActiveSheet" durch "WS" ersetzen und vor jedem "Cells Range Columns Rows", bei dem noch kein Worksheet davor steht, das "WS." ergänzen.

Gruß Daniel


  

Betrifft: AW: Ausblenden von Zeilen
von: Kevin
Geschrieben am: 06.12.2018 19:23:26

dort durchläuft es ja jetzt dann jedes Blatt, oder ? Wie muss ich das einstellen, dass es nur ein spezielles blatt dann abarbeitet? Hab drei Blätter, bei denen das laufen muss....


  

Betrifft: AW: Ausblenden von Zeilen
von: Piet
Geschrieben am: 07.12.2018 00:52:18

Hallo Kevin

erweitere doch einfach die Lsöung von Daniel um diesen Teil: - eine İf Then Anweisung mit OR

mfg Piet

For each WS in ThisWorkbook.Worksheets
   if WS.Name = "X" Or WS.Name = "Y" Or WS.Name = "Z" then
     Hier der Makrocode
   end dif
 Next