37414
Goto Top

Excel - neue Einträge immer ans Ende einer Tabelle übernehmen

Hallo,

ich habe in einem anderen Thread bereits ein Problem mit Daten beschrieben und zum Teil dort auch gelöst.
Nun habe ich eine Frage, für die ich keine Formel gefunden habe.

In 2 untereinander stehenden Zellen trage ich je ein Datum ein (z.B. in Zelle A1 + A2).
Diese beiden Daten sollen anschließend automatisch am Ende einer bestehenden Tabelle unten als letzte Einträge eingefügt werden.

Beispiel der Tabelle:
Datum 1
Datum 2
Datum 3
hier soll das Datum aus Zelle A1 hin
hier soll das Datum aus Zelle A2 hin

In der Tabelle könnten aber statt Datum 1 - 3 auch schon 5 oder 6 Daten stehen.
Die Inhalte aus A1 und A2 sollen also immer ans Ende eingefügt werden.

Wie lautet der Code hierfür?

Danke & Gruß,
imebro

Content-Key: 610358

Url: https://administrator.de/contentid/610358

Printed on: May 10, 2024 at 19:05 o'clock

Mitglied: 146189
146189 Oct 05, 2020 updated at 17:58:36 (UTC)
Goto Top
Wenn die Zellen schon als Datum formatiert sind dann
Sub BlaBlub()
    With ActiveSheet
        .Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Resize(2, 1).Value = WorksheetFunction.Transpose(Array(.Range("A1"), .Range("A2")))  
    End With
End Sub
Wenn sie dies noch nicht sind dann holt der Code das nach (Achtung "NumberFormat" benutzt universelle Datumsformatierungs-Schema nicht das lokale., d.h. so wird es auch für ein deutsches Excel richtig umgesetzt, alternativ kann auch NumberFormatLocal genutzt werden)
Sub BlaBlub()
    Set ws = ActiveSheet
    With ws.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Resize(2, 1)
        .Cells(1).Value = ws.Range("A1")  
        .Cells(2).Value = ws.Range("A2")  
        .NumberFormat = "m/d/yyyy"  
    End With
End Sub
Mitglied: 37414
37414 Oct 05, 2020 at 17:56:57 (UTC)
Goto Top
Danke für die schnelle Antwort.

Reicht es, wenn ich dieses Makro einfach im Arbeitsblatt speichere oder muss ich das irgendwie noch mit den Zellen verbinden (...wie auch immer)? face-wink

Gruß,
imebro
Mitglied: 146189
146189 Oct 05, 2020 updated at 18:01:23 (UTC)
Goto Top
Zitat von @37414:
Reicht es, wenn ich dieses Makro einfach im Arbeitsblatt speichere oder muss ich das irgendwie noch mit den Zellen verbinden (...wie auch immer)? face-wink
An das Event deiner Wahl binden (Button, Zelländerung oder was auch immer) und fertig. Woher soll ich wissen wann du meinst das du fertig bist :-P.
Mitglied: 37414
37414 Oct 05, 2020 updated at 18:05:31 (UTC)
Goto Top
Danke, aber genau das wollte ich eigentlich vermeiden, dass man extra einen Button betätigen muss oder sonst etwas.

Geht das nicht auch über eine Formel (Wenn - Dann.... etc.)?
Oder automatisch, nachdem man das letzte Feld (hier A2) verlassen hat, statt Button?

Gruß,
imebro
Mitglied: 146189
146189 Oct 05, 2020 updated at 18:13:38 (UTC)
Goto Top
Zitat von @37414:
Geht das nicht auch über eine Formel (Wenn - Dann.... etc.)?
Wenn du nichts anderes in die Zellen eingeben willst dann ja. Dann müssen aber alle Zellen darunter mit Formeln versehen sein und was anderes kannst du dort dann nicht mehr manuell eingeben.
Oder automatisch, nachdem man das letzte Feld (hier A2) verlassen hat, statt Button?
Das wäre kein Problem, gehe im VBA Editor in den Codeabschnitt des jeweiligen Arbeitsblattes und für dort ein (Achtung das ist ein Event und muss in den Codeabschnitt des richtigen Sheets eingefügt werden)
Siehe dazu https://docs.microsoft.com/de-de/office/vba/api/excel.worksheet.change wenn du was lernen willst.
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Application.Intersect(Range("A2"), Target) Is Nothing Then  
        Application.EnableEvents = False
        With Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Resize(2, 1)
            .Cells(1).Value = Range("A1")  
            .Cells(2).Value = Range("A2")  
            .NumberFormat = "m/d/yyyy"  
        End With
        Application.EnableEvents = True
    End If
End Sub
Dann wird der Code jedes mal automatisch nach dem Aktualisieren der Zelle A2 ausgeführt.
Mitglied: 37414
37414 Oct 05, 2020 at 18:50:11 (UTC)
Goto Top
Hallo und danke für Deine Mühe,

es ist alles etwas kompliziert.

Ich werde mal eine Test-Datei erstellen und diese hier hochladen.
Dann kannst Du (oder sonst Jemand) das ja mal anschauen und dann wird auch klarer, was ich mir vorstelle und wo das Problem ist.

Gruß,
imebro
Mitglied: 37414
37414 Oct 05, 2020 at 19:50:55 (UTC)
Goto Top
So - hier habe ich mal eine Beispieldatei erstellt und sie hochgeladen.
Weitere Infos findet man innerhalb der Datei.

Hier kann man sie downloaden:
Beispieldatei (Excel)

Zwei Infos noch:
1) Ich habe die Datei mit Libre-Office-Calc erstellt und im Excel-Format (xlsx) abgespeichert. Hoffe das funktioniert face-wink
2) In einer ersten Fassung meiner Originaldatei, hatte ich dem Hauptblatt noch eine Eingabemaske vorgeschaltet, wo die Daten eingetragen und dann ins Hauptblatt übernommen wurden. Das habe ich nur deshalb gemacht, da manchmal in den Feldern Formeln stehen mußten und ich dort daher nichts eintragen konnte...

Wäre schön, wenn Du/Ihr diese Datei mal checken könntet. Das noch verbleibende Problem habe ich in der Datei in roter Schrift beschrieben.

Danke und schöne Grüße,
imebro
Mitglied: 146189
146189 Oct 06, 2020 updated at 07:58:35 (UTC)
Goto Top
Zitat von @37414:
Hier kann man sie downloaden:
Beispieldatei (Excel)
Antwort kennst du, deine hier schon öfter geposteten Trojaner-Downloads von dubiosen Download-Sites lade ich mir nicht auf den Rechner face-wink. Darf aber jeder gerne für sich selbst entscheiden.

Zwei Infos noch:
1) Ich habe die Datei mit Libre-Office-Calc erstellt und im Excel-Format (xlsx) abgespeichert. Hoffe das funktioniert face-wink
Ich fahre auch immer erst zum Bäcker bevor ich zum Tanken fahre face-big-smile.
Wäre schön, wenn Du/Ihr diese Datei mal checken könntet. Das noch verbleibende Problem habe ich in der Datei in roter Schrift beschrieben.
Lehrer face-big-smile?! Nee, deine Arbeit darf dann gerne jemand anderes übernehmen. Ich bin dann raus, mit den obigen Infos sollte eigentlich jetzt jeder mit etwas Mitdenken klar kommen und seine Arbeit damit dann auch selbst erledigen können, ist hier ja eigentlich ein Admin-Forum und nicht das Dr. Windows Forum face-wink.
Mitglied: 37414
37414 Oct 06, 2020 updated at 08:37:20 (UTC)
Goto Top
OK, ich kann verstehen, dass Du Dir die Datei nicht runterladen magst.

Ich habe jetzt mal Deinen Tipp mit dem Button ausprobiert und dem Button auch den entsprechenden Code zugewiesen.
In der neuen Fassung müssen jedoch nicht die Zellen A1 + A2 übernommen werden, sondern die Zellen

C3 + D3
C4 + D4

Diese müssen immer der Tabelle unten angehangen werden und auch so nebeneinander und untereinander, wie hier abgebildet.
Was muss ich dazu an Deinem obigen Code ändern?

Sub Urlaub()
    With ActiveSheet
        .Cells(Rows.Count, 3).(Columns.Count, 3).End(xlUp).Offset(1, 0).Resize(2, 1).Value = WorksheetFunction.Transpose(Array(.Range("C3"), .Range("C4")))  
    End With
End Sub

Habe jetzt schon Rows auf 3 geändert und Colums ebenfalls mit 3 dazu gesetzt, da Zeile 3 und Spalte C gemeint sind.
Aber wo/wie gebe ich die genaue Position an... also den ganzen Bereich (2 Zellen in Zeile 3 und 2 Zellen in Spalte 3))

Gruß,
imebro