VBA-Script zum Ausblenden bestimmter Zeilen

Hi Kenner,

Prob (Excel):
Ich habe eine Tabelle, bei der jede vierte Zeile ein neues Kalenderdatum beschreibt. Nach Eingabe einiger Werte sind von manchen Kalenderdaten eine bis alle (=4) Zeilen in einer Spalte belegt.

Die freien Zeilen (2 bis 4) der Kalenderdaten sollen nun mittels Makro ausgeblendet werden.

Bis jetzt kam ich so weit:

Sub Ausblenden()

Dim i as integer
Dim Szeile as integer

For i = 1 to [HeutigesDatum - DatumInZeileEins \* 4]

 Szeile = i + int(i/4)
 If [ZelleInSpalte'C'Zeile(Szeile)
 Rows("[Szeile]:[Szeile]").Select
 Range("A[Szeile]").Activate
 Selection.EntireRow.Hidden = True
 End if

Next i

End sub

Wie muß ich an den [entscheidenden] Stellen korrigieren?

Es dankt und grüßt
Der R o b.

Erster Hinweis …
Moin,

versuch´s mal mit Cells(y, x). Ist in der Hilfe beschrieben und sollte hier nützlich sein, weil Du damit gut Bereiche durchschreiten kannst (mittels der x-y-Koordinaten). Darüber hinaus macht es Sinn, sich das Range-Objekt als solches mal genauer anzusehen (Eigenschaften und Methoden).

Ansonsten:

[HeutigesDatum] = Date
[DatumInZeileX] = Range("E2").Value oder Cells(2, 5).Value
[ZelleInSpalte'C'Zeile(Szeile)] = analog zu Zeile drüber
 
Rows("[Szeile]:[Szeile]").Select - Kannst Du Dir sparen.
Range("A[Szeile]").Activate - Nach "Select" ist die automatisch aktiv.

Dies nur als schnelle Hinweise zum Selberbasteln.

Kristian

Nachfrage :o)
Hallo Kristian,

danke für die Tipps. Jetzt habe ich nur noch das Problem, daß ich mit dem [HeutigesDatum]-Ding nicht klarkomme.

Ansonsten:

[HeutigesDatum] = Date

Mein abgewandelter Code sieht jetzt so aus:

Dim Endzeile As Integer
Dim b As Integer
b = [HeutigesDatum]
Endzeile = b - Cells(2, 4).Value \* 4 + 5
 Range(Cells(7, 5), Cells(7, Endzeile)).Select
 Selection.SpecialCells(xlCellTypeFormulas, 2).Select
 Selection.EntireRow.Hidden = True 

Ich will also den Bereich „selecten“, der von (7,5) bis zu (7, [Zeile, in der auch das heutige Datum steht]) reicht.
Innerhalb dieser markiert „SpecialCells“ dann alle Zellen, in denen nur Text steht, die letzte Methode blendet schließlich jene Zeilen aus.
Die zweite, dritte und vierte Zeile unter dem jeweiligen Kalenderdatum soll ab dem aktuellen Datum eingeblendet bleiben (für Einträge).
Was ich nicht herausfinden konnte: Lassen sich Integer-Variablen in das Cell()-Objekt einfügen wie ich das oben gemacht habe? Und welches Kalenderdatumsformat entspricht dem in Excel verwendeten (jeder Tag eine Ganzzahl weiter ab 2.1.1904 = 1)?

Ausgeblendet werden sollen also nur die leeren Zeilen mit dem Datum bis heute:

<u><br> |A B ... G </u>
 :expressionless:
 4| [Startdatum] Bla
 5| Blabla
 6|
 7|
 8| =B4+1 Bla
 9| Blabla
10| Bla
11|
12| =B8+1 Bla
13|
 :expressionless:
80| =B76+1 [ist hier: HeutigesDatum]
81|
82|
83|
84| =B80+1 Blabla
85|
86|
 :expressionless:

Von den dargestellten wären in dem Beispiel die Zeilen 6, 7, 11, 13 auszublenden, weil dort in den Spalten B und G nix steht; die Zeilen 85, 86 etc. bleiben aber eingeblendet, weil dort noch Einträge folgen können.

Vielen Dank noch mal und adventliche Grüße sagt
Der R o b.

Achso, jetzt weiss ich, was Du meinst. Ich habe mal ein Beispiel gebastelt und hier bereitgestellt:

http://www.sabineschulz.de/kristian/WerWeissWas/WeWe…

Kristian

PS:

Ansonsten:

[HeutigesDatum] = Date

Das bedeutet nur, dass die „Date“-Funktion das aktuelle Datum zurückgibt.

1 „Gefällt mir“

Merci bien!!!
Hei Kristian,

mein Gott, wie soll ich Dir für Deine Mühe danken?!? Ich tu’s einfach:
Vielen vielen Dank! :o)

Famos, wie Du das ausgearbeitet hast… An den von Excel angebotenen Autofilter hatte ich gar nicht mehr gedacht. Er ist zwar schneller als das Makro (warum bloß? das Makro kann doch kaum wegen der Rechnerleistung so lange brauchen) aber auch weniger komfortabel, da die Drop-down-Auswahl nicht frei plazierbar ist.

Ich muß mal gucken, was ich da mache. Aber immerhin läufts nun.

Viele Grüße und einen schönen zweiten Advent sacht
Der R o b.

P. S.:

Ansonsten:

[HeutigesDatum] = Date

Das bedeutet nur, dass die „Date“-Funktion das aktuelle Datum
zurückgibt.

…schon, aber in welchem Format? Mit den Daten die in den Zellen stehen und von Cells(x, y).value zurückgegeben werden ist es jedenfalls nicht kompatibel.