2.8k Aufrufe
Gefragt in Tabellenkalkulation von
Hallo,

ich habe folgendes Problem: möchte auf mehreren Tabellenblättern wenn in der Zeile 1 von A:AI der Wert 0 steht die enstprechende Spalte ausblenden.

Habe folgendes Makro erstellt...funktioniert aber leider nicht...was ist falsch???

Sub Test2()
Dim colIndex As Long
Dim rngRange As Range

Sheets(Array("tabelle1", "tabelle2", "tabelle3")).Select
For Each rngRange In Sheets(Array("tabelle1", "tabelle2", "tabelle3")).Range("A1:AI1")
If rngRange.Value = "0" Then
rngRange.EntireColumn.Hidden = True
Else
rngRange.EntireColumn.Hidden = False
End If

Next


End Sub

Idealerweise sollte dieses Makro bei Veränderung einer Zelle ausgeführt werden...

Vielen Dank vorab und Gruß, Ines

4 Antworten

0 Punkte
Beantwortet von hajo_zi Experte (9.1k Punkte)
Hallo Ines,

Option Explicit

Sub Test2()
Dim rngRange As Worksheet
Dim LoI As Integer
Application.ScreenUpdating = False
For Each rngRange In Sheets(Array("tabelle1", "tabelle2", "tabelle3"))
For LoI = 1 To 35
rngRange.Columns(LoI).EntireColumn.Hidden = rngRange.Cells(1, LoI).Value = 0
Next LoI
Next rngRange
Application.ScreenUpdating = False
End Sub

Gruß Hajo
0 Punkte
Beantwortet von hajo_zi Experte (9.1k Punkte)
Hallo Ines,

den Abspann habe ich jetzt nicht gelesen.
Mein Makro blendet auch alle Spalten ein die verschieden von 0 sind.
Wenn Du es testet wird Dir auffallen das es lange braucht.
Ich würde es mit zwei Mkaro machen. Das vorgeschlagene für deine jetzige Datei und für den laufenden Betrieb unter diese Abeitsmappe
Option Explicit

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
If Sh.Name = "Tabelle1" Or Sh.Name = "Tabelle2" Or Sh.Name = "Tabelle3" Then
If Target.Row = 1 And Target.Column < 36 Then
Columns(Target.Column).EntireColumn.Hidden = Target.Value = 0
End If
End If
End Sub

Das Makro reagiert nicht auf Formeln.

Gruß Hajo
0 Punkte
Beantwortet von
Super, danke! Das 1. Makro klappt...bei dem 2. ist mir nicht ganz klar wo in dem Marko steht dass es auf eine Verändeurng in einer bestimmten Zelle reagieren soll?

Danke schon mal vorab!!
0 Punkte
Beantwortet von hajo_zi Experte (9.1k Punkte)
Hallo Ines,

starte den VBA Editor (Alt+F11), Bild sollte zweigeteilt sein ansonsten Strg+R, gehe auf Deine Datei, Doppelklick auf DieseArbeitsmappe , Code ins rechte Fenster kopieren, VBA Editor schließen. Das Makro wird automatisch ausgeführt.

Gruß Hjao
...