Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1408to1412
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
Datum eintragen VBA
24.02.2015 10:12:25
Klet
Hallo,
beim klick auf "Schaltfläche1" soll die nächste leere Zelle in C ermittelt werden (in dem Beispiel C20) und von da an das Datum des letzten Tages aus dem Vormonat eingetragen werden (Danke an Michael).
Allerdings wird es nicht in die Tabelle eingetragen, sonder darunter.
Weiß jemand um Lösung dieses Problems?
Anbei die Excel-Datei als Verständnis.
Vielen Dank und Gruß
Malte
https://www.herber.de/bbs/user/95953.xlsm

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Datum eintragen VBA
24.02.2015 10:34:52
Erich
Hi Malte,
probier mal

Sub LetzterTagVormonat()
Dim i As Long ' ist für Zeilennummern besser als Byte
With Worksheets("Tabelle2")
For i = .Cells(1, 3).End(xlDown).Row To .Cells(1, 1).End(xlDown).Row
.Cells(i, 3).FormulaLocal = "=HEUTE()-TAG(HEUTE())"
' oder
'       .Cells(i, 3).Value = Date - Day(Date)
Next i
End With
End Sub
Willst du Formeln oder Werte in die Tabelle schreiben lassen?
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich

AW: Datum eintragen VBA
24.02.2015 12:08:41
Klet
Hi Michael,
stimmt, das habe ich vergessen zu erwähnen. Jetzt ist es verständlich, warum das Makro so nicht funktionierte.
Danke Erich (die Werte sollen in die Tabelle geschrieben werden) und yummi für die schnelle Hilfe. Jetzt läuft es so, wie ich es mir vorgestellt habe.
Gruß
Malte

Anzeige
AW: Datum eintragen VBA
24.02.2015 10:35:08
Michael
Hallo Klet!
Das Makro arbeitet in diesem Fall schon richtig - Du hast nämlich Deine Daten über "Als Tabelle formatieren" als Datentabelle eingerichtet; das ist etwas anderes als ein "normaler Tabellenbereich". D.h. in diesem Fall gilt auch Zelle C27 als "befüllte" Zelle, auch wenn darin keine Daten enthalten sind - entscheidend ist hier, dass in A27 Daten stehen und damit zählt die gesamte Zeile A27:C27 zur Datentabelle, und gilt damit als letzte Zelle. Darum beginnt die Eintragung des Datums erst darunter.
Wenn Du also Deine Datentabelle markierst und im Menüband unter Tabellentools - Entwurf - Tools - In Bereich konvertieren wählst bleibt Dir die Formatierung der Tabelle (Hintergrundfarben, Gitternetzlinien... ) erhalten, aber das Makro arbeitet wie gewünscht.
Bei Deinem damaligen Beitrag war nicht von einer so formatierten Datentabelle auszugehen - daher mein Code.
Klar ;-)?
LG
Michael

Anzeige
AW: Datum eintragen VBA
24.02.2015 10:35:38
yummi
Hallo Klet,
Du hast überall noch Zeichen in deienr Tabelle drin, die ich nicht gelöscht bekomme daher workrraound:

Sub LetzterTagVormonat()
Dim Nächste As Long
Dim i As Byte
Nächste = Worksheets("Tabelle2").Cells(1048576, 3).End(xlUp).Row + 1
Do While Len(Worksheets("Tabelle2").Cells(Nächste, 3)) 
Gruß
yummi

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

Anzeige
AW: Datum eintragen VBA
24.02.2015 13:37:55
EtoPHG
Hallo,
Ich wäre
a) für die Variante von Michael(migre): Zellen im Listobjekt
und
b) Fixe Werte eintragen von Erich G.
und darum:
Sub LetzterTagVormonat()
With Worksheets("Tabelle2").ListObjects("Tabelle5").DataBodyRange
If IsEmpty(.Cells(.Rows.Count, 3)) Then _
Range(.Cells(1, 3).End(xlDown).Offset(1), _
.Cells(.Rows.Count, 3)) = Date - Day(Date)
End With
End Sub

Gruess Hansueli

Wunderschöne Synthese Hansueli, Top! owT
25.02.2015 09:59:00
Michael
.

Wunderschöne Synthese Hansueli, Top! owT
25.02.2015 09:59:07
Michael
.

AW: Datum eintragen VBA
25.02.2015 12:15:12
Klet
Hallo Hansueli,
auf was bezieht sich Tabelle5 in dem Code? Danke auch für deine Hilfe!
Sub LetzterTagVormonat()
With Worksheets("Tabelle2").ListObjects("Tabelle5").DataBodyRange
If IsEmpty(.Cells(.Rows.Count, 3)) Then _
Range(.Cells(1, 3).End(xlDown).Offset(1), _
.Cells(.Rows.Count, 3)) = Date - Day(Date)
End With
End Sub
Gruß
Malte

Anzeige
AW: Datum eintragen VBA
25.02.2015 13:25:51
Michael
Hallo Malte!
"Tabelle5" ist der Name der jenem Bereich gegeben wurde, den Du "als Tabelle formatiert hast". Damit ist dieser Bereich auch direkt ansprechbar. Markiere eine Zelle in dem Bereich den Du "als Tabelle formatiert" hast und schau dann im Menüband nach unter Tabellentools - Entwurf - ganz vorne links steht Tabellenname. Bei Dir war das in der Beispieldatei "Tabelle5" - das könntest Du aber auch überschreiben und bspw. "Daten" nennen - das müsstest Du dann aber auch im Code von Hansueli anpassen.
Insofern auch meine Empfehlung: Nicht mit "als Tabelle formatieren" arbeiten ;-).
LG
Michael

Anzeige
pre-Tag
25.02.2015 16:57:41
Erich
Hi zusammen,
nur damit der Archivthread ab hier wieder etwas besser aussieht:
So - jetzt ist's wieder sauber... :-)
Rückmeldung brauxcht's hierfür nicht - Grüße aus Kamp-Lintfort von Erich

302 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige