Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1536to1540
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

Verknüpfung Range,SpecialCells,RowCount

Verknüpfung Range,SpecialCells,RowCount
24.01.2017 09:49:09
Marsch
Hallo zusammen,
unter https://www.herber.de/bbs/user/110833.xlsm findet ihr zum folgenden die passende Testdatei, falls dies weiterhilft.
Vorab: Meine Kenntnisse sind begrenzt, ich versuche aber aktuell diese learning-by-doing auszubauen. Habe auch versucht diverse Ansätze zu kombinieren, bin aber leider nicht zum Ziel gekommen und wende mich nun an euch.
Was ich vorhabe:
Ich habe eine Liste mit beispielhaft 3 Spalten.
Nun blende ich in einer anderen Funktion alle Zeilen in diesem Array (hier: testarea) aus, die in Spalte A P2 oder P3 stehen haben, sodass nur noch jene mit P1 übrig bleiben.
Jetzt suche ich eine Funktion, mit der ich in dem verbliebenen Bereich der testarea nochmal selbiges machen kann.
Ich habe hier noch 3 Zeilen mit P1 in Spalte A. Diese tragen die Werte A,B,C.
Ich möchte nun mit der Funktion im noch sichtbaren Bereich der testareajene Zeilen ausblenden, in denen in Spalte B B oder C steht wenn in Zelle A12 A (quasi die "Filterzelle")steht.
Das habe ich mit diesem Code versucht:

Sub test_range()
Dim i As Integer
Dim lrow As Integer
Dim A As String
Dim B As String
Dim C As String
Dim test_area As Range
A = "A"
B = "B"
C = "C"
lrow = Sheets("testsheet").Range("testarea").SpecialCells(xlCellTypeVisible).Cells(Rows. _
Count, 2).End(xlUp).Row
If Sheets("testsheet").Range("A12") = "A" Then
For i = lrow To 1 Step -1
If Sheets("testsheet").Cells(i, 2) = A Then
Sheets("testsheet").Rows(i).Hidden = False
ElseIf Sheets("testsheet").Cells(i, 2) = B Then
Sheets("testsheet").Rows(i).Hidden = True
ElseIf Sheets("testsheet").Cells(i, 2) = C Then
Sheets("testsheet").Cells(i).Hidden = True
End If
Next i
ElseIf Sheets("testsheet").Range("A12") = "B" Then
For i = lrow To 1 Step -1
If Sheets("testsheet").Cells(i, 2) = B Then
Sheets("testsheet").Rows(i).Hidden = False
ElseIf Sheets("testsheet").Cells(i, 2) = A Then
Sheets("testsheet").Rows(i).Hidden = True
ElseIf Sheets("testsheet").Cells(i, 2) = C Then
Sheets("testsheet").Cells(i).Hidden = True
End If
Next i
ElseIf Sheets("testsheet").Range("A12") = "C" Then
For i = lrow To 1 Step -1
If Sheets("testsheet").Cells(i, 2) = C Then
Sheets("testsheet").Rows(i).Hidden = False
ElseIf Sheets("testsheet").Cells(i, 2) = A Then
Sheets("testsheet").Rows(i).Hidden = True
ElseIf Sheets("testsheet").Cells(i, 2) = B Then
Sheets("testsheet").Cells(i).Hidden = True
End If
Next i
End If
End Sub
Ich vermute den Fehler (Laufzeitfehler 1004 im letzten ElseIf Schritt der ersten For Schleife) in der Definition von lrow, denn ich bin mir bei der Syntax nicht sicher, ob ich das alles so hintereinander schreiben kann.
Sollte das zu lösen sein, könntet ihr mir als Anfänger noch einen Tipp geben (quasi das Sahnehäubchen). Gibt es eine elegantere Alternative? Mit einer with Funktion? Oder ich habe auch etwas von CaseSelect gelesen. Was würdet ihr hier verwenden? Könntet ihr mir einen beispielhaften Ansatz zeigen, da ich diese Funktionen noch nie wirklich genutzt habe? Wäre diese Variante nur 'Kosmetik' oder bringt diese auch Performancevorteile?
Ich danke euch vielmals im Voraus und freue mich über Rückmeldungen!
Marsch

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Verknüpfung Range,SpecialCells,RowCount
24.01.2017 10:10:56
ChrisL
Hi
Cells().Hidden statt Rows().Hidden
Ich denke man könnte wie folgt kürzen:
Sub test_range()
Dim i As Integer
Dim lrow As Integer
With Worksheets("testsheet")
lrow = .Range("testarea").SpecialCells(xlCellTypeVisible).Cells(Rows.Count, 2).End(xlUp). _
Row
For i = lrow To 1 Step -1
If .Cells(i, 2) = .Range("A12") Then
.Rows(i).Hidden = False
Else
.Rows(i).Hidden = True
End If
Next i
End With
End Sub

cu
Chris
AW: Verknüpfung Range,SpecialCells,RowCount
24.01.2017 10:23:31
Marsch
Wie blöd. Manchmal sieht man den Wald vor lauter Bäumen nicht!
In der Tat, wenn ich das Cells im letzten Schritt auch durch Rows ersetze (er soll ja die ganze Reihe ausblenden), funktioniert es wie gewünscht. Da bin ich ja froh, dass es doch so einfach war.
Die gekürzte Version schaue ich mir morgen mal an und gebe Rückmeldung, wenn jedoch jemand weitere (das wichtigste ist performantere) Lösungsansätze hat bitte immer her damit!
Vielen vielen Dank für die schnelle Hilfe
Marsch
Anzeige

25 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige