AW: VBA Makro: Spalten ausblenden wenn Bereich = "0 x"
23.09.2014 10:09:55
fcs
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