Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1848to1852
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

Ausgabe der Zeilennummer nach Kopiervorg

Ausgabe der Zeilennummer nach Kopiervorg
30.09.2021 10:51:43
egbert
Hallo,
ich habe eine Formularseite gebastelt, bei der eingegebene Daten in eine Liste eingefügt werden.
Nun möchte ich, dass das Makro, welches die Daten in das andere Blatt in eine neue Zeile kopiert hat,
auf der Formularseite die Zeilennummer in ein Feld einträgt. Ich weiss nicht genau wie ich das machen soll.
Also die Eingabeseite heisst "Eingaben" und das Blatt mit der Liste heisst einfach "Liste" (sehr kreativ :D)
Beispiel:
Ich gebe Daten ein, klicke den Button an auf dem das Makro liegt, und die Daten werden nach "Liste" in Zeile 10 kopiert (während Zeilen 5-9 schon Daten enthalten aus vorherigen Übertragungen).
In dem selben Makro soll nun am Ende die Nummer, die in A10 steht (In Zeile A stehen von mir eigens vergebene Nummern), auf der Eingabeseite in das Feld
B10 kopiert werden.
Wie stelle ich das an? Ich kriege es nur hin Zellinhalte bestimmter Zellen zu kopieren. Da man aber nicht im Blick hat, welche Zeile aktuell bei dem Vorgang beschrieben wird und ich vermeiden möchte das man erst nochmal das Blatt wechselt um nachzusehen, möchte ich das automatisieren.
Schon mal vielen Dank für Hilfe dazu.
P.S.: Ich bin VBA Anfänger und habe die ganzen Makros die ich nutze entweder über den Rekorder gemacht oder von Beispieldateien aus dem Net kopiert und nur die Werte/Zeilen etc. angepasst. Daher wäre es schön wenn mir jemand genau erklären könnte, was ich machen muss bzw. direkt den Code dazu nennt.

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Ausgabe der Zeilennummer nach Kopiervorg
30.09.2021 11:01:55
Rudi
Hallo,
immer in Eingaben B10?

sheets("Eingaben").cells(10, 2) = sheets("Liste").cells(rows.count, 1).end(xlup)
Gruß
Rudi
AW: Ausgabe der Zeilennummer nach Kopiervorg
30.09.2021 13:42:28
egbert
Das funktioniert leider nicht. Damit wird mir der letzte Wert aus Spalte A zurückgegeben, nicht aber der Wert, wo in der Liste auch ein Eintrag ist.
Noch mal anders erklärt:
Spalte A enthält Reklamationsnummern, fortlaufend. Beginnend mit RK20220001.
Wenn ich jetzt in der "Eingaben"-Seite meine Daten erfasse und das Makro nutze, werden die eingegebenen Daten in die "Liste"
kopiert. Es wird automatisch immer die letzte Zeile gefüllt, aber Spalte B.
Nun möchte ich, dass die Reklamationsnr., die neben der zuletzte eingefügten Daten steht, in das "Eingaben"-Blatt in das Feld B10
kopiert wird.
Denn die Eingabefelder sind bereits so formatiert, dass man ein Etikett drucken kann, das dann an die Ware kann.
Damit man nicht immer manuell die Nummer raus suchen muss, soll sie halt automatisch dort rein.
Die Funktion kann so nicht funktionieren, da sie ja davon ausgeht das der Rest der Spalte leer ist.
Anzeige
kenne ich deine Mappe? owT
30.09.2021 14:21:08
Rudi
AW: kenne ich deine Mappe? owT
30.09.2021 14:21:56
egbert
Eher unwahrscheinlich. Wieso?
wieso: weil meine Glaskugel defekt ist. owT
30.09.2021 14:27:05
Rudi
AW: wieso: weil meine Glaskugel defekt ist. owT
30.09.2021 14:31:41
egbert
Sorry, ich verstehe nicht.
AW: wieso: weil meine Glaskugel defekt ist. owT
30.09.2021 14:32:52
Rudi
wenn ich deinen Aufbau nicht kenne, ist alles nur stochern im Nebel.
AW: wieso: weil meine Glaskugel defekt ist. owT
30.09.2021 14:39:36
egbert
Ach so, sie möchten die Datei sehen? Das ist leider nicht möglich, da die Datei bereits viele Daten enthält.
Daher habe ich ausführlich beschrieben, was ich benötige. Den Code kann ich ja anpassen, ich weiß nur nicht welche Funktion ich nutzen muss,
damit bei dem neuen Eintrag in der Liste der Wert aus Spalte A einfach nur in ein andere Feld in Arbeitsblatt A kopiert wird.
Der Code der hier genannt wurde gibt mir zwar im richtigen Feld einen Wert zurück, aber halt den letzten in der Spalte und nicht den, bei dem die Zeile auch gefüllt ist.
Anzeige
bin raus. owT
30.09.2021 15:13:10
Rudi
AW: wieso: weil meine Glaskugel defekt ist. owT
30.09.2021 23:08:59
ralf_b
versuchs mal damit.

sheets("Eingaben").cells(10, 2) = sheets("Liste").cells(rows.count,2).end(xlup)
Deine Beschreibung ist also ausführlich. Soso. Vielleicht für dich. Ich war eigentlich bei "Zeile A" schon raus. Aber das dumme Mitleid.

Ach so, sie möchten die Datei sehen? Das ist leider nicht möglich, da die Datei bereits viele Daten enthält.
Dann mach es möglich. Du willst doch was. Er/wir möchten eine Datei sehen, nicht unbedingt "die Datei". Vorzugsweise mit dem problematischen Code. Und ein paar Beispieldaten.
Anzeige
AW: wieso: weil meine Glaskugel defekt ist. owT
01.10.2021 08:28:36
egbert
Das funktioniert nicht. Mir wird dann die letzte Zeile in Spalte A ausgegeben, und nicht die Zeile, in der auch Daten sind.
Ich weiß nicht was ich mehr schreiben soll, um das Problem darzustellen, aber ich versuche es nochmal:
Es gibt 2 Arbeitsblätter: "Liste" und "Eingaben"
In "Eingaben" werden manuell Daten erfasst, die dann per Makro in die nächste freie Zeile der "Liste" kopiert werden.
In Spalte A der "Liste" sind Fortlaufend Reklamationsnummern vorgegeben.
Das Makro kopiert die erfassten Daten in die Liste, womit dem Vorgang eine Reklamationsnummer zugewiesen wurde.
Diese Nummer soll nun mit dem selben Makro nach dem Kopiervorgang in das Feld "B10" im Eingabeformular kopiert werden, damit das Formular
gedruckt werden kann.
Da in Spalte A ("LISTE") bereits 200 Zeilen vorgegeben sind, ist der Befehl "suche nach letztem Eintrag und kopiere diesen" nicht möglich.
Statt dessen benötige ich etwas in der Art: "Suche letzten Eintrag in Spalte B und kopiere die Zelle links davon (also Spalte A) und füge diese in "Eingabe" Zelle B10 ein"
Anbei eine Test Datei
https://www.herber.de/bbs/user/148378.xlsm
Anzeige
AW: wieso: weil meine Glaskugel defekt ist. owT
01.10.2021 21:53:37
ralf_b
Hallo egbert,
Anhand deiner Beispieldatei, hier ein Vorschlag für eine Umsetzung.
Das mit der Suche in Spalte B hatte ich dir schon geschickt.
Was hier noch fehlt ist eine Prüfung auf bereits vorhandene Einträge. Wenn Menschen Daten eingeben kommt schon mal ein Fehler vor. z.b. Doppeleintragung

Sub transfer_werte()
Dim rngDaten1    As Excel.Range
Dim lRow As Long, i As Long
With Worksheets("Eingaben")
Set rngDaten1 = Union(.Range("B4:B9"), .Range("E4:E6"))
End With
With Worksheets("Liste")
lRow = .Cells(.Rows.Count, 2).End(xlUp).Row + 1 '  erste freie Zeile für den aktuellen Datensatz
For i = 1 To rngDaten1.Cells.Count 'schleife über alle Zellen in der Eingaberange
With .Cells(lRow, 2)
.Offset(1, i) = rngDaten1.Cells(1, i) 'Wertzuweisung Zelle für Zelle
End With
Next
Worksheets("Eingaben").Range("B10").Value = .Cells(lRow, 1).Value ' B10 füllen
End With
End Sub
viel Spaß damit
Anzeige
AW: wieso: weil meine Glaskugel defekt ist. owT
04.10.2021 14:33:30
egbert
Das funktioniert leider nicht. Wenn ich den Code nutze, dann kopiert er mir irgendwelchen Unsinn in die Liste :D
Es wird dann B5 + D5 + E5 aus "Eingabe" in die dritte Zeile der Liste kopiert.
Die erste ReklaNr. wird zurück geworfen ins richtige Feld, aber auch nur beim ersten Mal. Mit jedem weiteren Betätigen des Buttons
kopiert er ext das selbe in die selben Zellen und wirft auch immer nur die erste ReklaNr aus.
AW: wieso: weil meine Glaskugel defekt ist. owT
04.10.2021 15:21:53
egbert
Problem ist gelöst. Habe in einem englischen Forum sofort genau das bekommen was ich gesucht habe.
Wesentlich einfacherer Aufbau als das was ich bisher probiert habe bzw. was mir genannt wurde.
Trotzdem danke an diejenigen, die zu helfen versucht haben.
Hier noch der Code, der nun funktioniert:

Sub transfer_werte()
Dim shtEingaben  As Excel.Worksheet
Dim rngDaten1    As Excel.Range
Dim rngDaten2    As Excel.Range
Dim rngDaten3    As Excel.Range
Set shtEingaben = ThisWorkbook.Worksheets("Eingaben")
Set rngDaten1 = shtEingaben.Range("B4:B9")
Set rngDaten2 = shtEingaben.Range("E4:E6")
Set rngDaten3 = shtEingaben.Range("A13:C13")
With Worksheets("Liste")
With .Cells(.Rows.Count, "B").End(xlUp)
.Offset(1, 0).Resize(rngDaten1.Columns.Count, rngDaten1.Rows.Count).Value = Application.Transpose(rngDaten1.Value)
.Offset(1, 6).Resize(rngDaten2.Columns.Count, rngDaten2.Rows.Count).Value = Application.Transpose(rngDaten2.Value)
.Offset(1, 9).Resize(rngDaten3.Rows.Count, rngDaten3.Columns.Count).Value = rngDaten3.Value
shtEingaben.Range("B10").Value = .Offset(1, -1).Value
End With
End With
End Sub

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige