Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1164to1168
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

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

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 :-?
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… ;->
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

323 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige