Clever-Excel-Forum

Normale Version: Spalten ausblenden abhängig vom Zellwert
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Guten Abend!

Mittels eines VBA Codes möchte ich in zwei unterschiedlichen Sheets Spalten, abhängig vom Zellwert im Bereich i (Spalte 48 -83, jeweils in Zeile 23) und n (Spalte  44 -79, jeweils in Zeile 8) ausblenden.
Ist der jeweilige Zellwert = 0, dann soll die jeweilige Spalte ausgeblendet werden.
Code:
Private Sub CommandButton1_Click()
Dim i As Integer
Dim n As Integer

For i = 48 To 83
   If Cells(23, i).Value = 0 Then
   Columns(i).EntireColumn.Hidden = True
End If
Next i
     

'Das selbe im nächsten Sheet
Sheets("Tabelle 2").Activate

For n = 44 To 79
If Cells(8, n).Value = 0 Then
Columns(n).EntireColumn.Hidden = True
End If
Next n
     
Sheets("Tabelle 1").Activate

End Sub

Das funktioniert auch soweit gut, solange ich das nur für ein Sheet mache, sobald ich ins zweite wechseln möchte ("Tabelle 2) werden diese dort nicht ausgeblendet.

Habe ich einen Fehler im Code gemacht? Bzw. könnte ich das besser darstellen?


Danke und noch einen schönen Abend.
Hallo,

Zitat:solange ich das nur für ein Sheet mache, sobald ich ins zweite wechseln möchte ("Tabelle 2) werden diese dort nicht ausgeblendet.

mal eine Frage vorweg: 
gibt es denn auf dem zweiten Blatt auch einen zweiten Button?

Das geht nämlich nicht zweifelsfrei aus Deinem Post hervor und in dem uns vorgestellten Code
ist kein Blattwechsel vorgesehen. Folglich passiert bei einem Blattwechsel auch nichts.
Hallo,
Private Sub CommandButton1_Click()
Dim i As Integer
With Sheets("Tabelle 1")
For i = 48 To 83
.Columns(i).EntireColumn.Hidden = .Cells(23, i).Value = 0
Next i
End With
'Das selbe im nächsten Sheet
With Sheets("Tabelle 2")
For i = 44 To 79
.Columns(i).EntireColumn.Hidden = .Cells(8, i).Value = 0
Next i
End With
End Sub
Gruß Uwe
Hallo

Ohne das Blatt wechseln. Ohne Activate.

Code:
Private Sub CommandButton1_Click()
Dim i As Integer
Application.ScreenUpdating = False
'Tabelle1
    For i = 48 To 83
        If Cells(23, i).Value = 0 Then
            Tabelle1.Columns(i).EntireColumn.Hidden = True
        End If
    Next
'Tabelle2
    For i = 44 To 79
        If Cells(8, i).Value = 0 Then
            Tabelle2.Columns(i).EntireColumn.Hidden = True
        End If
    Next
Application.ScreenUpdating = True
End Sub
Gruss Guschti
Vielen Dank funktioniert super! Habe den Code von Guschti verwendet, sehr geschickt nicht das Blatt wechseln zu müssen!

Gruß