Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1380to1384
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

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

VBA Makro: Spalten ausblenden wenn Bereich = "0 x"
22.09.2014 15:18:58
hual
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

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Makro: Spalten ausblenden wenn Bereich = "0 x"
22.09.2014 17:04:52
fcs
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

Anzeige
AW: VBA Makro: Spalten ausblenden wenn Bereich = "0 x"
23.09.2014 07:12:58
hual
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

AW: VBA Makro: Spalten ausblenden wenn Bereich = "0 x"
23.09.2014 07:36:05
hual
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

Anzeige
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

Anzeige
AW: VBA Makro: Spalten ausblenden wenn Bereich = "0 x"
23.09.2014 10:58:57
hual
Vielen Dank!
Ich hoffe ich bekomme mal die Zeit um mich ins VBA einlesen zu können. Ist wirklich sehr hilfreich.
Lg
Alois

326 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige