Bedingt Spalten in Excel ausblenden

Hallo zusammen,
ich würde gerne in deiner Tabelle diejenigen Spalten ausblenden lassen, die eine 1 in der ersten Zeile haben (z.B. A1, C1, usw.). Spalten mit einer 0 in der ersten Zeile sollen angezeigt bleiben.
Mit folgendem Code bricht der Befehl ab sobald in einem Feld etwas anderes als 1 steht.

If Range(„A1“) = 1 Then
Columns(„A:A“).Select
Selection.EntireColumn.Hidden = True

If Range(„B1“) = 1 Then
Columns(„B:B“).Select
Selection.EntireColumn.Hidden = True

usw…

Kann mir jemand helfen??
Danke schonmal

Huch, Du willst etwas in meiner Tabelle ausblenden? Danke nein!
Im Ernst: das ist eine etwas merkwürdige Prgrammierung, zu einem If … Then gehört normalerweise auch ein End If, ggf. auch ein Else.
Es ist nicht ersichtlich, was nach den If’s im Code noch alles passiert, so unvollstäbdig kann man das nicht klären.
Übrigens: hier bietet sich wohl eine Schleife über die Spalten an, z.B. If Cells(row, col) = … row wäre 1 für Zeile 1, col=1, 2 … bis max 256 für die Spalten A, B, …
Viel Erfolg - bitte keine weiter Rückfrage, bin ab sofort im Urlaub.
Rainer

Hallo

wie sieht der ganze code aus?
was ich so sehen konnte dürfte kein fehler drinn sein.

Hallo

wie sieht der ganze code aus?
was ich so sehen konnte dürfte kein fehler drinn sein.

Hi,
danke erstmal für die schnelle Antwort!
Hier ist der ganze Code soweit (für die Spalten A,B,C).
Wenn ich jetzt in A1 und C1 eine 1 stehen habe, in B1 aber eine 0 oder garnichts, wird Spalte A zwar ausgeblendet, C aber nicht. Ideen?

Sub hide()

’ hide Makro

’ Tastenkombination: Strg+Umschalt+Q

If Range(„A1“) = 1 Then
Columns(„A:A“).Select
Selection.EntireColumn.Hidden = True

If Range(„B1“) = 1 Then
Columns(„B:B“).Select
Selection.EntireColumn.Hidden = True

If Range(„C1“) = 1 Then
Columns(„C:C“).Select
Selection.EntireColumn.Hidden = True

End If
End If
End If

End Sub

Hi,

Sub hide()

’ hide Makro

’ Tastenkombination: Strg+Umschalt+Q

If Range(„A1“) = 1 Then
Columns(„A:A“).Select
Selection.EntireColumn.Hidden = True
End If

If Range(„B1“) = 1 Then
Columns(„B:B“).Select
Selection.EntireColumn.Hidden = True
End If

If Range(„C1“) = 1 Then
Columns(„C:C“).Select
Selection.EntireColumn.Hidden = True
End If

End Sub

2 „Gefällt mir“

Super! Vielen Dank, es funktioniert!

Hallo,

bei Programmcode kann ich leider nicht helfen.
Beste Grüße
H. Schuster

Hallo M1982,

du hast die If-Bedingungen verschachtelt. Dadurch werden die Prüfungen abgebrochen, sobald eine Prüfung nicht WAHR ergibt.

Mit dem folgenden Makro werden zuerst alle Spalten eingeblendet, dann die Spalten in einer Schleife abgearbeitet und ggf. ausgeblendet.

Gruß
Franz

Sub AusblendenSpalten()
 'Spalten ausblenden, wenn in Zeile 1 = 1
 Dim objWks As Worksheet, Spalte As Long
 Set objWks = ActiveSheet
 Application.ScreenUpdating = False
 With objWks
 .Columns.Hidden = False
 For Spalte = 1 To .Cells(1, .Columns.Count).End(xlToLeft).Column
 If .Cells(1, Spalte).Value = 1 Then
 .Columns(Spalte).Hidden = True
 End If
 Next
 End With
 Application.ScreenUpdating = True
End Sub

Grüezi M1982

Hallo zusammen,
ich würde gerne in deiner Tabelle diejenigen Spalten
ausblenden lassen, die eine 1 in der ersten Zeile haben (z.B.
A1, C1, usw.). Spalten mit einer 0 in der ersten Zeile sollen
angezeigt bleiben.

Kann mir jemand helfen??

Das tust Du am besten mit einer Schleife über alle Zellen in Zeile 1:

Public Sub tr\_SpaltenAusblenden()
Dim rngZelle As Range
Dim lngColHidden As Long

 Application.ScreenUpdating = False

 For Each rngZelle In Intersect(Range("1:1"), ActiveSheet.UsedRange)
 rngZelle.EntireColumn.Hidden = (rngZelle.Value = 1)
 lngColHidden = lngColHidden + rngZelle.Value
 Next rngZelle

 MsgBox "Spalten ausgeblendet:" & Chr(10) & Chr(10) & lngColHidden

 Application.ScreenUpdating = True
End Sub

Mit freundlichen Grüssen

Thomas Ramel

  • MVP für MS-Excel -

Hallo,

sieht auf den ersten Blick gut aus, bis auf, dass die If-Abfrage nicht geschlossen ist.

If

end If

Gruß
Ramaka

Hallo,
Du kannst die Zellen auch über einen Loop ansprechen:
For k = 0 To 5
Zelle(k) = Worksheets(„Abstract“).cells(1, 1 + k).Value
if Zelle(k) 0 or 1 then
next k
else Selection.EntireColumn.Hidden = True
Next k

Gruß

Leider kann ich dir nicht sagen wo da der Fehler liegt.

MFG

Hallo Franz,
vielen Dank für die schnelle Antwort, hat mir sehr geholfen.
Gruß,
Martin

Hi,
danke für den Tip, genau daran lag es.
Gruß, Martin

Hi,
danke für die Antwort, hab das Problem lösen können.
Gruß, Martin

Hallo,

Sub Spalten_ausblenden()
'Feststellen, welches die letzte gefüllte Zelle in Zeile 1 ist
LetzteSpalte = Cells(1, Columns.Count).End(xlToLeft).Column

'Schleife zu ausblenden der Spalten die in Zeile 1 eine „1“ stehen haben
For i = LetzteSpalte To 1 Step -1
Eins = Cells(1, i).Value
Select Case Eins
Case Is = 1
Columns(i).Select
Selection.EntireColumn.Hidden = True
End Select
Next i
End Sub

Feedback wäre schön…

Gruß,
Ptonka

Sub Spalten_ausblenden()
Dim i As Integer
Dim endspalte As Integer

endspalte = 26 'Wäre Z1

For i = 1 To endspalte
If Cells(1, i).Value = 1 Then
Cells(1, i).EntireColumn.Hidden = True
ElseIf Cells(1, i).Value = 0 Then
Cells(1, i).EntireColumn.Hidden = False
Else
Cells(1, i).EntireColumn.Hidden = False
End If
Next i
End Sub

lg ovm