Registriert seit: 19.11.2014
Version(en): 2010
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
Registriert seit: 19.11.2014
Version(en): 2010
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
Registriert seit: 12.03.2016
Version(en): Excel 2003
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
Folgende(r) 1 Nutzer sagt Danke an Gast 123 für diesen Beitrag:1 Nutzer sagt Danke an Gast 123 für diesen Beitrag 28
• nuttli
Registriert seit: 14.04.2014
Version(en): 2003, 2007
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!
Gruß Atilla
Folgende(r) 1 Nutzer sagt Danke an atilla für diesen Beitrag:1 Nutzer sagt Danke an atilla für diesen Beitrag 28
• nuttli
Registriert seit: 19.11.2014
Version(en): 2010
Besten Dank
Ihr habt mir sehr geholfen
Gruss aus der Schweiz
Peter