Ergänzung... AW: Datum eintragen VBA
24.02.2015 12:44:57
Michael
Hallo Malte!
Wie ich Dir geschrieben habe, war in diesem Fall das Problem, dass Du Deine Daten im Tabellenblatt über "als Tabelle formatieren" formatiert hast (und diese dadurch nicht als "normaler Bereich" ansprechbar sind).
Falls noch von Interesse, und wenn Du das Tabellenformat gerne beibehalten möchtest (und nicht in einen "normalen Bereich" konvertieren möchtest, wie in meiner ersten Antwort empfohlen) dann lässt sich auch darauf zugreifen. Hier das geänderte Makro in Deiner Original-Beispieldatei (die Schaltfläche löst jetzt das neue Makro aus: https://www.herber.de/bbs/user/95958.xlsm
Und für alle Interessierten, die nicht in die Mappe schauen möchten, hier:
Sub LetzterTagVormonatBeiTabellenformat()
Dim FormTabelle As Range
Dim i As Long
'--- Variante 1 ---
'Den Bereich des Arbeitsblattes, der "als Tabelle formatiert" wurde, OHNE Überschrift _
festlegen
Set FormTabelle = Tabelle2.ListObjects("Tabelle5").DataBodyRange
For i = FormTabelle.Cells(FormTabelle.Rows.Count, 3).End(xlUp).Row To FormTabelle.Rows. _
Count
FormTabelle.Cells(i, 3).FormulaLocal = "=HEUTE()-TAG(HEUTE())" 'Zellformel eintrage
'FormTabelle.Cells(i, 3).Value = Date - Day(Date) 'Zellwert eintragen
Next i
'--- Variante 2 ---
' 'Den Bereich des Arbeitsblattes, der "als Tabelle formatiert" wurde, MIT Überschrift _
festlegen
' Set FormTabelle = Tabelle2.ListObjects("Tabelle5").Range
' 'In diesem Fall muss in der Schleife die jeweils zu befüllende Zelle um 1 (= i + 1) _
versetzt werden
' 'da es durch das Festlegen des Bereiches MIT Überschrift sonst zu einem Fehler und einer _
Leerzeile kommt
' 'Außerdem muss hier das Schleifenende - 1 gesetzt werden, da sonst automatisch eine " _
Ergebniszeile" in der
' 'formatierten Tabelle hinzugefügt wird
' For i = FormTabelle.Cells(FormTabelle.Rows.Count, 3).End(xlUp).Row To FormTabelle.Rows. _
Count - 1
' FormTabelle.Cells(i + 1, 3).FormulaLocal = "=HEUTE()-TAG(HEUTE())" 'Zellformel _
eintragen
' 'FormTabelle.Cells(i + 1, 3).Value = Date - Day(Date) 'Zellwert eintragen
' Next i
End Sub
Liebe Grüße
Michael