Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema RefEdit
BildScreenshot zu RefEdit RefEdit-Seite mit Beispielarbeitsmappe aufrufen

VBA Makro: Spalten ausblenden wenn Bereich = "0 x"

Betrifft: VBA Makro: Spalten ausblenden wenn Bereich = "0 x" von: hual
Geschrieben am: 22.09.2014 15:18:58

Hallo zusammen!

Ich bin mit VBA wenig bis gar nicht vertraut und hätte gerne ein Makro welches mir die Spalten F:O ab Zeile 8 durchsucht und wenn dort nur "0" UND "0 x" vorkommen, sollte diese Spalte ausgeblendet werden.

ich hab dazu schon was in die Richtung gefunden, etwas editiert aber nicht zum Erfolg gekommen.
Ich denke es liegt daran, dass in einer Spalte "0" UND "0 x" vorkommen. Ich aber nicht beide Bedingungen drin habe.


Public Sub SpaltenAusblenden()

Dim iSpalte  As Integer

   Application.ScreenUpdating = False

   With ThisWorkbook.Worksheets(1)
      .Columns("F:O").EntireColumn.Hidden = False
      For iSpalte = 1 To 123
         If Application.CountA(.Range(.Cells(8, iSpalte), .Cells(500, iSpalte))) = "0" & " " & " _
 _
x" Then
            .Columns(iSpalte).Hidden = True
         End If
      Next iSpalte
   End With
   
   Application.ScreenUpdating = True

End Sub


Vielleicht kann mich jemand weiterschupsen.
Danke,
Alois

  

Betrifft: AW: VBA Makro: Spalten ausblenden wenn Bereich = "0 x" von: fcs
Geschrieben am: 22.09.2014 17:04:52

Hallo Alois,

hier mal ein erster Schubser.

Public Sub SpaltenAusblenden()

  Dim iSpalte  As Integer, iCount As Long, iCountA As Long

   Application.ScreenUpdating = False

   With ThisWorkbook.Worksheets(1)
      .Columns("F:O").EntireColumn.Hidden = False
      For iSpalte = 1 To 123
        With .Range(.Cells(8, iSpalte), .Cells(500, iSpalte))
          'Zellen mit "0" oder "=0 x" zählen
          iCount = Application.WorksheetFunction.CountIf(.Cells, "0") _
                + Application.WorksheetFunction.CountIf(.Cells, "0 x")
          'Zellen mit Inhalt zählen (zählt auch Zellen mit "")
          iCountA = Application.WorksheetFunction.CountA(.Cells)
        End With
        If iCountA = iCount And iCount > 0 Then
            .Columns(iSpalte).Hidden = True
        End If
      Next iSpalte
   End With
   
   Application.ScreenUpdating = True

End Sub


Leider funktioniert dies noch nicht, wenn in den Spalten auch Formeln mit Ergebnis "" (Leerstring) vorkommen. Dann muss man die Prüfung noch anders aufbauen.

Gruß
Franz


  

Betrifft: AW: VBA Makro: Spalten ausblenden wenn Bereich = "0 x" von: hual
Geschrieben am: 23.09.2014 07:12:58

Hallo Franz!

Das hat auf Anhieb funktioniert! Vielen herzlichen Dank.
Darf ich ganz frech sein? Würdest du mir vielleicht kurz erklären was die einzelnen Zeilen aus dem Makro so machen, damit ich das mit der Zeit anpassen kann?
Ich versteh nämlich auch das ursprüngliche nicht wirklich.

lg
Alois


  

Betrifft: AW: VBA Makro: Spalten ausblenden wenn Bereich = "0 x" von: hual
Geschrieben am: 23.09.2014 07:36:05

Hallo Franz!

Das hat auf Anhieb funktioniert! Vielen herzlichen Dank.
Darf ich ganz frech sein? Würdest du mir vielleicht kurz erklären was die einzelnen Zeilen aus dem Makro so machen, damit ich das mit der Zeit anpassen kann?
Ich versteh nämlich auch das ursprüngliche nicht wirklich.

lg
Alois


  

Betrifft: AW: VBA Makro: Spalten ausblenden wenn Bereich = "0 x" von: fcs
Geschrieben am: 23.09.2014 10:09:55

Hallo Alois,

ich hab mal noch ein paar Kommentare ergänzt, die dir hoffentlich weiterhelfen.
Ansonsten: Excel-VBA hat auch eine Hilfefunktion, die zumindest zu den Methoden und Funktionen Hinweise geben und oft auch kleine Beispiel haben.


Gruß
Franz

Public Sub SpaltenAusblenden()
  'Variablen-Deklaration - keine Muss aber empfehlenswert
  Dim iSpalte  As Integer, iCount As Long, iCountA As Long
  'Bildschirmaktualisierung deaktivieren - beschleunigt die Makroausführung
   Application.ScreenUpdating = False
   'Aktionen im  1. Tabellenregister in dieser Arbeitsmappe _
        (ThisWorkbook = Arbeitsmappe in der das Makro gespeichert wird)
   With ThisWorkbook.Worksheets(1) 'statt 1 könnte man auch einen Blattnamen in _
        Anführungszeichen verwenden
      'Spalten von Spalte F bis O einblenden - Ausgangszustand herstellen
      .Columns("F:O").EntireColumn.Hidden = False
      'Spalten 1 bis 123 (A bis DS) in Schleife abarbeiten
      For iSpalte = 1 To 123
        'Zellbereich, der in jeder Schleife ausgewertet werden soll _
          Durch die With-Anweisung erspart man sich die Wiederholung in jeder _
          der folgenden Zeilen
        With .Range(.Cells(8, iSpalte), .Cells(500, iSpalte))
          'Zellen mit "0" oder "=0 x" zählen
          'CountIf = Tabellenfunktion ZÄHLENWENN - die Ergebnisse der beiden _
            Auswertungen werden addiert
          iCount = Application.WorksheetFunction.CountIf(.Cells, "0") _
                + Application.WorksheetFunction.CountIf(.Cells, "0 x")
          'Zellen mit Inhalt zählen (zählt auch Zellen mit "")
          'CountA = Tabellenfunktion ANZAHL2
          iCountA = Application.WorksheetFunction.CountA(.Cells)
        End With
        'Wenn Anzahl der Zellen mit "0" oder "0 x" = Anzahl der Zellen mit Inhalt _
            UND Anzahl der Zellen mit "0" oder "0 x" Gößer 0 dann
        If iCountA = iCount And iCount > 0 Then
            'Spalte ausblenden
            .Columns(iSpalte).Hidden = True
        End If
      Next iSpalte
   End With
   'Bildschirmaktualisierung wieder aktivieren
   Application.ScreenUpdating = True

End Sub




  

Betrifft: AW: VBA Makro: Spalten ausblenden wenn Bereich = "0 x" von: hual
Geschrieben am: 23.09.2014 10:58:57

Vielen Dank!

Ich hoffe ich bekomme mal die Zeit um mich ins VBA einlesen zu können. Ist wirklich sehr hilfreich.

Lg
Alois


 

Beiträge aus den Excel-Beispielen zum Thema "VBA Makro: Spalten ausblenden wenn Bereich = "0 x""