Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1940to1944
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
Inhaltsverzeichnis

Datum eintragen - Datensatz archivieren - (Fortsetzung)

Datum eintragen - Datensatz archivieren - (Fortsetzung)
22.08.2023 18:23:02
Lilli
Hallo Zusammen,

dieses Threads ist fortsetzung von diesem Threads:
https://www.herber.de/forum/cgi-bin/callthread.pl?index=1943103

ich war leider krank und konnte leider nicht rechtzeitig auf die Antworten reagieren.

Sub ArchivierenundDatum_Klicken()

Dim r, rngZiel As Range, lr As ListRow

With Sheets("datenarchiv").ListObjects(1)
For Each lr In .ListRows
If Application.CountA(lr.Range) = 0 Then
Set rngZiel = lr.Range.Cells(1)
Exit For
End If
Next lr
End With

If rngZiel Is Nothing Then
With Sheets("datenarchiv").ListObjects(1)
Set rngZiel = .ListRows.Add.Range.Cells(1)
End With
End If

With Sheets("Daten").ListObjects(1)
r = Application.Match(Range("D9"), .DataBodyRange.Columns(1), 0)
If Not IsError(r) Then
.DataBodyRange.Cells(r, 1).Resize(, 9).Copy
With rngZiel
.PasteSpecial xlPasteValues
.Offset(, 9) = Now
End With
.DataBodyRange.Cells(r, 2).Resize(, 8).ClearContents
End If
End With

End Sub



Link zu Datei: https://www.herber.de/bbs/user/162334.xlsm

Das übertragen und hinzufügen klappt ganz gut. Allerdings wird die Position mitgenommen und somit mehrmals den gleichen Position in der Archivierung. Die erste Spalte sollte bitte nicht mitgenommen werden. Also ab dem zweiten Spalte. Wie würde dann den Code aussehen. Ich kann es nur testen. meine VBA Kenntnisse gehen Richtung null.

für das Datum eintragen habe ich bereits folgendes Code bekommen und das funktioniert auch sehr gut.

Sub DatumundUhrzeit_Klicken()

Dim r
With Sheets("Daten").ListObjects("daten.tbl")
r = Application.Match(Range("D9"), .DataBodyRange.Columns(1), 0)
If Not IsError(r) Then
.DataBodyRange.Cells(r, 9) = Now
End If
End With
End Sub


Der Kollege Rudi hat mir beim letzten Thread geholfen, worüber ich mich sehr freue und sehr dankbar bin. Ich freue mich über jede Hilfe, die ich bekommen kann.

Vielen Dank für die Mühe und Feedback im Voraus.

Liebe Grüße, Lilli

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Datum eintragen - Datensatz archivieren - (Fortsetzung)
22.08.2023 19:27:29
Rudi Maintaire
Halllo,
teste mal
Sub ArchivierenundDatum_Klicken()

Dim r, rngZiel As Range, lr As ListRow

With Sheets("datenarchiv").ListObjects(1)
For Each lr In .ListRows
If Application.CountA(lr.Range) = 0 Then
Set rngZiel = lr.Range.Cells(2)
Exit For
End If
Next lr
End With

If rngZiel Is Nothing Then
With Sheets("datenarchiv").ListObjects(1)
Set rngZiel = .ListRows.Add.Range.Cells(2)
End With
End If

With Sheets("Daten").ListObjects(1)
r = Application.Match(Range("D9"), .DataBodyRange.Columns(1), 0)
If Not IsError(r) Then
.DataBodyRange.Cells(r, 2).Resize(, 8).Copy
With rngZiel
.PasteSpecial xlPasteValues
.Offset(, 8) = Now
End With
.DataBodyRange.Cells(r, 2).Resize(, 8).ClearContents
End If
End With

End Sub


Gruß
Rudi
Anzeige
AW: Datum eintragen - Datensatz archivieren - (Fortsetzung)
24.08.2023 08:34:00
Lilli
Hallo Rudi,

Vielen lieben Dank noch mal für Dein Einsatz.

Das Kopieren funktioniert klasse. Er nimmt nicht mehr die Zahl, die am Anfang steht und die Automatisch generiert wird anhand einer einfachen Formel.

Eine Sache funktioniert leider noch nicht so ganz: Beim Kopieren ins DatenArchiv wird immer noch die erste Spalte höchstwahrscheinlich nach Inhalt geprüft und dann eingefügt. Es wird zum Schluss eingefügt, was auch vollkommen richtig ist, allerdings sind davor 20 Zeilen noch leer. Nur die erste Spalte ist gefüllt mit den Positionsformel.

Es sollte nach der zweiten Spalte in der Tabelle geprüft werden, ob da einen Inhalt besteht oder nicht.

oder was man vielleicht machen könnte: Wenn die Position zum Beispiel C20 = "", dann kann der Datensatz eingefügt werden. Dann ist es definitiv nichts in der Zeile.

Das ist die Formel, die in der erste Spalte ist:

=WENN(ISTLEER(D20);"";ANZAHL2($D$10:D20)) 


Ich hoffe, ich konnte ein wenig verdeutlichen, was ich damit meine.

vielen lieben Dank noch mal für Deine Mühe im Voraus.

Ich bin so dankbar, dass es so ein Forum gibt und ich bin so dankbar, dass Menschen wie Dich da sind, die sich so gut auskennen und so wunderbar helfen. Vielen lieben Dank.

Liebe Grüße,
Lilli
Anzeige
AW: Datum eintragen - Datensatz archivieren - (Fortsetzung)
24.08.2023 10:47:58
Rudi Maintaire
Hallo,
ersetze
  With Sheets("datenarchiv").ListObjects(1)

For Each lr In .ListRows
If lr.Range.Cells(2) = "" Then
Set rngZiel = lr.Range.Cells(2)
Exit For
End If
Next lr
End With


Gruß
Rudi
AW: Datum eintragen - Datensatz archivieren - (Fortsetzung)
25.08.2023 10:56:53
Lilli
Hallo Rudi,

das funktioniert perfekt. Vielen lieben Dank noch mal. :)


ich habe noch eine Frage, aber die nicht mehr hier in Zusammenhang ist.

Darf ich fragen, wo Du so gut VBA gelernt hast?

Welche Empfehlungen könntest Du mir geben, wie ich am besten lernen kann? Vielleicht Bücher oder so, oder Internetseiten...


vielen Dank für die Mühe und Feedback im Voraus.

Liebe Grüße,
Lilli :)

Anzeige
AW: Datum eintragen - Datensatz archivieren - (Fortsetzung)
25.08.2023 13:39:03
Rudi Maintaire
Hallo,
Darf ich fragen, wo Du so gut VBA gelernt hast?
letztlich durch &gt20 Jahre Forenarbeit. Da arbeitet man an Problemen, die man sonst nicht hätte und liest Lösungen, auf die man nicht gekommen wäre.

Excel/ VBA ist pure Leidenschaft und besser als Lego. ;-)

Gruß
Rudi

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige