Anzeige
Archiv - Navigation
1680to1684
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

Kopieren in anderes Tabellenblatt flasche Zeile

Kopieren in anderes Tabellenblatt flasche Zeile
12.03.2019 14:12:20
Teufel
Hallo zusammen,
nachdem mir Herbers Excel Forum schon bei so manchen Problemchen geholfen hat, hoffe ich, dass mir die Community auch bei meinem Problem nun helfen kann.
Die Tabelle ist in mehrere Bereiche geteilt. Ein "hochziehen" der Einträge durch die einzelnen Bereiche inkl. eMailfunktion funktioniert soweit.
Nun kommt aber das ABER:
Wenn der letzte Bereich der Tabelle erreicht ist, soll die Zeile in der sich die Aktive Zelle befindet von Spalte 2 bis 32 kopiert werden und in Tabellenblatt 3 eingefügt werden. Folgende Kopiervorgänge sollen immer in die nächste freie Zeile in Tabelle3 eingefügt werden.
Doch leider wird immer in einer anderen Zeile, also nicht Zeile 1, dann 2, eingefügt, sondern in Zeile 79. Nun ist Zeile 79 aber die erste freie Zeile in Tabelle1. Warum wird nun beim kopieren in Zeile 79 in Tabelle3 geschrieben und nicht in Zeile 1.
Hier mein Code:
Private Sub fertig_Click()
On Error GoTo errhandler
' Ausleiten des Datensatzes in das Tabellenblatt Archiv
Dim vorprüfZeile As Long
vorprüfZeile = ActiveCell.Row
' Zeile mit Motor kopieren
Tabelle1.Range(Cells(vorprüfZeile, 2), Cells(vorprüfZeile, 32)).Copy Destination:=Tabelle2.  _
_
Cells(Cells(Rows.Count, 6).End(xlUp).Row + 1, 2)
' Einfügen der Daten in Tabellenblatt Archiv
'Tabelle2.Cells(Cells(Rows.Count, 6).End(xlUp).Row + 1, 2).PasteSpecial Paste:= _
xlPasteValues
'Tabelle2.Cells(Cells(Rows.Count, 6).End(xlUp).Row + 1, 2).PasteSpecial Paste:= _
xlPasteFormats
' Datensatzzeile löschen und neue Zeile unten im Bereich Aufbau einfügen
Tabelle1.Range(Cells(vorprüfZeile, 2), Cells(vorprüfZeile, 32)).Delete
Tabelle1.Range(Cells(22, 2), Cells(22, 32)).Insert
' Zwischenablage löschen
Application.CutCopyMode = False
' eMail Funktion für Vorhalt
' Set Outlook application object
Dim objOutlook As Object
Set objOutlook = CreateObject("Outlook.Application")
' Create eMail as Object
Dim ObjEmail As Object
Set ObjEmail = objOutlook.CreateItem(0)
With ObjEmail
' Empfänger
.To = Application.WorksheetFunction.VLookup(Cells(ActiveCell.Row, 22), Worksheets(" _
Tabelle3").Range("A:J"), 3, False)
'.cc = Application.WorksheetFunction.VLookup(Cells(ActiveCell.Row, 20), Worksheets(" _
tabelle3").Range("A2:J130"), 3, False)
' Betreff
.Subject = "Statusbericht"
' eMail-Inhalt
.HTMLbody = "eMail Inhalt Vertraulich"
ObjEmail.display
End With
Set ObjEmail = Nothing: Set objOutlook = Nothing
errhandler:
End Sub
Hab ich nun einen Denkfehler? Ist das grundsätzlich falsch? Wäre nice wenn ihr hierzu einen funktionierenden Lösungsansatz habt.
Grüße

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Kopieren in anderes Tabellenblatt flasche Zeile
13.03.2019 16:38:54
fcs
Hallo Teufel,
es ist mehr etwasrundsätzliches.
Arbeitet man mit mehreren Tabellenblättern gleichzeitg, ann muss man alle Objekte der Tabelleblätter korrekt/volllstandig referenzieren.
Dies hast du zwar für Range meistens gemacht aber nicht für Cells-Objekte.
Dadurch wird die Einfügezeile au dem aktiven Blatt -vermutlich Tabelle1- ermittelt und nich auf Tabelle2.
Ohne Garantie, dass es funktioniert, habe ich dein Makro angepasst.
LG
Franz

Private Sub fertig_Click()
On Error GoTo errhandler
' Ausleiten des Datensatzes in das Tabellenblatt Archiv
Dim vorprüfZeile As Long
vorprüfZeile = ActiveCell.Row
' Zeile mit Motor kopieren
With Tabelle1
.Range(.Cells(vorprüfZeile, 2), .Cells(vorprüfZeile, 32)).Copy Destination:= _
Tabelle2.Cells(Tabelle2.Cells(Tabelle2.Rows.Count, 6).End(xlUp).Row + 1, 2)
' Einfügen der Daten in Tabellenblatt Archiv
'Tabelle2.Cells(Cells(Rows.Count, 6).End(xlUp).Row + 1, 2).PasteSpecial Paste:= _
xlPasteValues
'Tabelle2.Cells(Cells(Rows.Count, 6).End(xlUp).Row + 1, 2).PasteSpecial Paste:= _
xlPasteFormats
' Datensatzzeile löschen und neue Zeile unten im Bereich Aufbau einfügen
.Range(.Cells(vorprüfZeile, 2), .Cells(vorprüfZeile, 32)).Delete
.Range(.Cells(22, 2), .Cells(22, 32)).Insert
End With
' Zwischenablage löschen
Application.CutCopyMode = False
' eMail Funktion für Vorhalt
' Set Outlook application object
Dim objOutlook As Object
Set objOutlook = CreateObject("Outlook.Application")
' Create eMail as Object
Dim ObjEmail As Object
Set ObjEmail = objOutlook.CreateItem(0)
With ObjEmail
' Empfänger
.To = Application.WorksheetFunction.VLookup(Cells(ActiveCell.Row, 22), _
Worksheets("Tabelle3").Range("A:J"), 3, False)
'.cc = Application.WorksheetFunction.VLookup(Cells(ActiveCell.Row, 20), _
Worksheets("tabelle3").Range("A2:J130"), 3, False)
' Betreff
.Subject = "Statusbericht"
' eMail-Inhalt
.HTMLbody = "eMail Inhalt Vertraulich"
ObjEmail.display
End With
Set ObjEmail = Nothing: Set objOutlook = Nothing
errhandler:
End Sub

Anzeige
AW: Kopieren in anderes Tabellenblatt flasche Zeile
14.03.2019 14:44:31
Teufel
Hallo Franz,
cool danke - hat so funktioniert!
Aber dass diese Referenzierung ein jedes Mal (auch innerhalb der Zeile) stattfinden muss, war mir nicht klar.
Danke für die Hilfe
Grüße

316 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige