Clever-Excel-Forum

Normale Version: Spalten ausblenden mit VBA
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo zusammen

Ich möchte gerne Spalten mit VBA ausblenden.
Ich habe einen funktionierenden Code um Zeilen auszublenden, komm aber nicht drauf, wie ich diesen umschreiben muss um Spalten auszublenden.


Code:
Sub Zeilen_ausblenden()
   Dim i As Long
   Dim rngA As Range
   Rows("1:66").Hidden = False
   For i = 1 To 66
       If Cells(i, 1).Value = "0" Then
           If rngA Is Nothing Then
               Set rngA = Rows(i)
           Else
               Set rngA = Union(rngA, Rows(i))
           End If
       End If
   Next i
   If Not rngA Is Nothing Then
       rngA.Rows.Hidden = True
       Set rngA = Nothing
   End If
End Sub


Ich möchte nun dasselbe mit den Spalten E bis LD machen, wobei die Nuller in der Spalte 1 geschrieben stehen.

Ich würde mich freuen über eure Hilfe

Gruss aus der Schweiz
Peter
Hallo, Ich nochmal

Ich habe da noch eine Frage:

Kann man mit VBA auch ein Datum in Tabelle2, Zelle O7 auslesen und den Wert in Zeile 10 der Tabelle1 suchen, dann alle Spallten links vom Resulatat bis Zeile O10 einblenden und rechts vom Resulatat ausblenden?

Eigentlich eine blöde Frage, ich bin mir sicher dass dies geht, nur weiss ich nicht wie.

Schöne Grüsse aus der Schweiz
Peter
Hallo

anbei 3 Makros, aber alle drei ungetestet.  Das erst Makro habe ich mal verkürzt, geht m.E. auch ohne Set + Union
Das 3. Makro bezieht sich auf die Datum Frage.  Beim 2. Makro setze ich voraus das die 1. "0"  für Spalte E auch in der 1. Zeile steht, bis zur Zeile 312 für LD.  Sollte Spalte E mit der 5.Zeile beginnen muss For Next geaendert werden auf i = 5 to 316, und in Columns(i+4) .Hidden die +4 gelöscht werden  

mfg  Gast 123

Code:
Sub Zeilen_ausblenden()
  Dim i As Integer
  Rows("1:66").Hidden = False
  For i = 1 To 66
     If Cells(i, 1).Value = "0" Then
        Rows(i).Hidden = True
     End If
  Next i
End Sub


'E-LD = 1-312   '1.Zeile = 0 für Spalte E
'A-LD = 5-316   '5.Zeile = 0 Für Sğalte E

Sub Spalten_ausblenden()
  Dim i As Integer
  Columns("E:LD").Hidden = False
  For i = 1 To 312  '1. "0" in Zeile 1
     'Zeile selbstangeben  (1= 1.Zeile)
     If Cells(i, 1).Value = "0" Then
        Columns(i + 4).Hidden = True   'i+4
     End If
  Next i
End Sub


Sub Datum_Spalten_einblenden()
  Dim Datum As Date, i As Integer
  Datum = CDate(Worksheets("Tabelle2").Range("O7"))
  Columns("A:LD").Hidden = True
  For i = 1 To 15
    'alle Datum Spalten bis O einblenden
     If Cells(10, i).Value = Datum Then
        Columns(i + 4).Hidden = True
     End If
  Next i
End Sub
Hallo,

Deine zweite Frage ergibt mehr Sinn und kann konkret beantwortet werden.

Zum Beispiel ginge es mit folgendem Code:


Code:
Sub spalten_nach_Datum_aus()
 Dim x
 With Sheets("Tabelle1")
 x = Application.Match(CLng(Sheets("Tabelle2").Range("O7")), .Rows(10), 0)
   If IsNumeric(x) Then
     .Columns.Hidden = False
     .Range(.Cells(1, x + 1), .Cells(1, .Columns.Count)).EntireColumn.Hidden = True
   End If
 End With
End Sub


@Gast
der vom TE eingestellte Code ist schneller am Ziel, je mehr Zeilen ausgeblendet werden sollen. Also, überflüssig ist da nichts.
Außer, dass die Null in Anführungszeichen steht!
Besten Dank
Ihr habt mir sehr geholfen

Gruss aus der Schweiz
Peter