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
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
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
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
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
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
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
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
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