Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: VBA Zeilen ein-/ausblenden

VBA Zeilen ein-/ausblenden
Daniel
Hallo
Ich habe eine Frage, ob der nachfolgende VBA-Code vereinfacht werden kann.
Ausgangslage: in der Spalte B sind die Auswahlkriterien (3 stellige Nummern: 101, 102, 103, etc.). Nun soll via Makro alle Zeilen einer bestimmte Nummer (z.B. 101) angezeigt werden.
Ist es möglich, den Code so zu erstellen, dass nicht jedes vorhandene Kriterium einzeln aufgelistet werden muss, also anstelle des "=" ein "ungleich"?
Sorry, bin leider ein totaler Anfänger auf dem Gebiet.
Danke schon mal für Eure Hilfe.
hier also der aktuelle Code:
Sub Liste101()
Dim i As Long
For i = 6 To UsedRange.Rows.Count
If Range("B" & i) = "100" Or Range("B" & i) = "103" Then
Range("B" & i).Rows.Hidden = True
ElseIf Range("B" & i) = "101" Then
Range("B" & i).Rows.Hidden = False
End If
Next
End Sub

Sub Liste102()
Dim i As Long
For i = 6 To UsedRange.Rows.Count
If Range("B" & i) = "101" Or Range("B" & i) = "103" Then
Range("B" & i).Rows.Hidden = True
ElseIf Range("B" & i) = "102" Then
Range("B" & i).Rows.Hidden = False
End If
Next
End Sub
.
.
.
.
Sub AlleAnzeigen()
Dim i As Long
For i = 6 To UsedRange.Rows.Count
If Range("B" & i) = "101" Or Range("B" & i) = "102" Or Range("B" & i) = "103" Then
Range("B" & i).Rows.Hidden = False
End If
Next
End Sub

Anzeige
Zeilen ein-/ausblenden gemäß Wert in Spalte B
07.07.2010 10:43:30
NoNet
Hallo Daniel,
prüfe doch mal, ob Dir dieser universelle Code weiterhilft :
Sub Liste(intWert)
'Aufruf z.B. : Liste(100) oder: Liste (102)
Dim i As Long
For i = 6 To UsedRange.Rows.Count
Rows(i).Hidden = Range("B" & i) = intWert
Next
End Sub
Der Aufruf erfolgt dann per Call Liste(100) anstatt Call Liste100.
Falls das funktioniert, kannst Du die Makros Liste101(), Liste102() etc. löschen
Prüfe bitte auch, ob das Ergebnis mit Werten außerhalb des Bereiches 100 bis 103 in Spalte B das gewünschte ist !
Gruß, NoNet
PS: Deutschland spielt "Vier gewinnt" :
gegen 4:0    gegen 4:1    gegen 4:0    gegen ?:?
;-)
Anzeige
Weiß ja nicht, ob deine Liste10x soviel mit...
07.07.2010 11:01:58
Luc:-?
…der jeweiligen Prozedur zu tun hat, Daniel,
dass NoNets Ansatz Sinn machen würde…
Deshalb hier nur mal mal folgende Vereinfachung…
vor Dim: Const VglWerte As String = "102 101 103"
statt If…Then…Else…:
With Range("B" & i): .EntireRow.Hidden = (Instr(VglWerte, .Value) > 4): End With
Gruß Luc :-?
Anzeige
Oder auch gleich mit MATCH in ARRAY vergleichen
07.07.2010 11:30:04
NoNet
Hey Luc,
dann würde ich aber folgende Lösung bevorzugen :
Sub ListeEinAusblenden()
Dim arr, lngZ As Long
arr = Array(100, 101, 102, 103, 104, 105)
For lngZ = 1 To ActiveSheet.UsedRange.Rows.Count
Rows(lngZ).Hidden = _
Not IsError(Application.Match(Range("B" & lngZ), arr, 0))
Next
End Sub

Finale :   gegen   &nbsp  2:1
Revival 2010 ?
Anzeige
AW: Oder auch gleich mit MATCH in ARRAY vergleichen
07.07.2010 11:34:52
Daniel
thx, werde nach der Mittagspause mal versuchen Eure Vorschläge umzusetzen.
Gruss
Daniel
Er hatte mit Textzahlen vgl, da ist das am...
07.07.2010 11:40:00
Luc:-?
…einfachsten, NoNet,
wenn's nicht noch mehr wird (von 104ff hatte ich nichts gesehen, auch ist die Struktur der Mappe unklar!). Dann würde ich anstelle von Array hier mit der gesplitteten Konstante arbeiten. Ist schön übersichtlich, weil am PgmAnfang und damit auch pflegeleicht… ;-)
Gruß Luc :-?
PS: Mal sehen, wie weit du diesmal daneben liegst… ;->
Anzeige
Daneben liege ich....
07.07.2010 11:43:52
NoNet
...allenfalls mit der Jahreszahl 1974 ;->
Daneben liege ich....daher zu-Gruß
08.07.2010 19:54:36
robert
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige