Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

variabler Range Bereich über mehrere Blätter

variabler Range Bereich über mehrere Blätter
07.02.2019 14:02:45
Georg
Liebe Mitglieder,
ich muss mein Problem nochmals öffnen, da ich i-wie nicht zurecht komme.
der Code unten funktioniert.
Was ich allerdings zuerst nicht mit berücksichtigt habe, ist, dass der Bereich rngSchicht variabel ist, und zwar ist jedes Blatt ein Monat, also unterschiedlich viele Spalten.
Die Datumswerte stehen von C3 : AD3,AE3 usw je nach Monat. DANACH kommen allerdings noch weitere Spalten, die noch andere Informationen enthalten, also über letzte Spalte funktioniert es nicht.
Wie kann ich die Zeile 3 nach dem letzten Datumswert abfragen (über IsDate)? Um dann im Code den Bereich rngSchicht variabel zu verwenden! Mir fehlt eine zündende Idee.
Danke erstmal für eure Unterstützung
Ein Mitglied gab mir den Tipp mit dem Case, aber i-wie reichen meine Kenntnisse nicht aus, das sinnvoll einzubauen:
Select Case Monat
Case Is = 1
Tage = 31
Case Is = 2
Tage = 28
Case Is = 3
Tage = 31
End Select
If Schaltjahr = True and if Monat = 2 Then Tage = 29
Der Ausgangscode von mir:
Sub WerteLöschen()
Dim rngSchicht As Range
Dim i As Long
Application.DisplayAlerts = False
For i = 4 To 15
With ThisWorkbook.Worksheets(i)
Set rngSchicht = .Range(.Cells(7, 3), .Cells(131, 33))
rngSchicht.ClearContents
End With
Next i
Application.DisplayAlerts = True
End Sub

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: variabler Range Bereich über mehrere Blätter
07.02.2019 14:16:04
ede
Hallo Georg,
ermittle je Sheet aus der Zelle C3 den Letzten Tag im Monat und setze diesen Wert als letzte Spalte ein
ungetestet:

Sub WerteLöschen()
Dim rngSchicht As Range
Dim i As Long
Application.DisplayAlerts = False
For i = 4 To 15
With ThisWorkbook.Worksheets(i)
ltag = Day(DateSerial(Year(.Range("C3")), Month(.Range("C3")) + 1, 1) - 1)
Set rngSchicht = .Range(.Cells(7, 3), .Cells(131, ltag + 2))
rngSchicht.ClearContents
End With
Next i
Application.DisplayAlerts = True
End Sub

AW: wunderbar! was ich nicht verstehe
07.02.2019 14:24:13
Georg
...ist am Ende diese Additionen bzw. Subtraktionen. Was bedeutet das:
...(.Range("C3")) + 1, 1) - 1)
....Cells(131, ltag + 2))
Eine kurze Antwort wäre schön, damit ich nicht dumm sterbe, aber besten DANK!!!! Gruß G
Anzeige
AW: wunderbar! was ich nicht verstehe
07.02.2019 14:35:10
ede
In Zelle c3 steht ja immer der 1. eines Monates. Mit DateSerial() kann man den Datum ermitteln, in diesem Fall den letzten des Monates.
Beispiel für den 01.03.2019:
Year(.Range("C3")) = 2019
Month(.Range("C3")) + 1 = wäre der Folgetagmonat
1 = der erste Tag
also liefert DateSerial den 01.04.2019, aber am Ende wird nochmal ein Tag abgezogen, daher der 31.03.2019
day(31.03.2019) = 31
AW: Ede: Danke für den Code und die ..
07.02.2019 14:38:47
Georg
die Erläuterungen, werde mir die abspeichern für zukünftige Fragestellungen. Gruß G

312 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige