Registriert seit: 08.07.2020
Version(en): 2010
Hallo Excel Profi
Mit dem selbst gebastelten VBA Script versuche ich aus der Tabelle Bestellung die aktive Zelle mit der ganzen Zeile in der Tabelle Archive zu kopieren, dort wo die letzte leere Zeile ist.
Ich bekomme nach dem Ausführen des Script Fehler 1004, an der Stelle
.PasteSpecial xlPasteValues
ws2.Range("A" & lastRow).PasteSpecial xlPasteValues
irgendeine Idee wie ich den Fehler im Script beseitigen kann?
Danke für Eure Hilfe
Sub cc()
Dim ws1 As Worksheet, ws2 As Worksheet
Dim lastRow As Long
Dim selectedRow As Long
Const xlPasteValues As Long = 4163
Set ws1 = ThisWorkbook.Sheets("Bestellung")
Set ws2 = ThisWorkbook.Sheets("Archive")
selectedRow = ActiveCell.Row
lastRow = ws2.Cells(ws2.rows.Count, "A").End(xlUp).Row + 1
ws1.rows(selectedRow).EntireRow.Copy ws2.Range("A" & lastRow)
ws2.Range("A" & lastRow).PasteSpecial xlPasteValues
End Sub
Registriert seit: 12.10.2014
Version(en): 365 Insider (64 Bit)
28.06.2024, 20:17
(Dieser Beitrag wurde zuletzt bearbeitet: 28.06.2024, 20:17 von RPP63.)
Moin!
Ernsthaft!
Das hat ja was, einer Konstante per Zuweisung einen falschen Wert zuzuweisen …
Die "fest verdrahtete" Konstante xlPasteValues hat den Wert -4163 und nicht 4163
Niemals nie sollte man auf die abstruse Idee kommen einer Variablen oder Konstanten einen bereits vergebenen Namen zu spendieren!
Zum Rest des Codes hülle ich den Mantel des Schweigens …
Aber vielleicht reichte Dir ja schon der Wink?
Egal, noch etwas genauer:
Es gibt die Vorfahrtsregel rechts vor links.
Du deklarierst sie mittels
Const Vorfahrtsregel = links vor rechts
um.
Du hältst Dich fortan daran und wunderst Dich, dass es an der nächsten Kreuzung zum Unfall kommt?
Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag.
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Registriert seit: 12.03.2016
Version(en): Excel 2003
Hallo
was du da mit Const festgelegt hast ist mir auch ein Rätsel, das kollidiert aber mit VBA Schlüsselwörtern!
Ich musste aber zweimal hinschauen um den Fehler in deinem Code zu erkennen. Was machst du da wirklich??
Kopierst du zuerst alle Werte, um die Zellen Formate mit zu kopieren?? Achte bitte mal auf diesen Befehl!
ws1.rows(selectedRow).EntireRow.Copy ws2.Range("A" & lastRow) Ein zusammenhängender Befehl!
Das ist ein in sich abschlossener Copy Befehl, kurze Syntacs, der den Kopiermodus IMMER aufhebt!
Danach kommt ein Kopierbefehl, an dessen Ende du den Kopiermodus selbst abschalten müsstest!
Der nachfolgende PastSpecial Befehl findet aber keinen -Copy Modus- mehr, der ist ja abgeschaltet!
Im Prinzip kannst den nachfolgenden Befehl einfach löschen. Der hat keine Funktion mehr.
mfg Gast 123
Registriert seit: 08.07.2020
Version(en): 2010
Danke an Euch beide
... jetzt funktioniert einwandfrei
Registriert seit: 12.10.2014
Version(en): 365 Insider (64 Bit)
29.06.2024, 08:39
(Dieser Beitrag wurde zuletzt bearbeitet: 29.06.2024, 08:40 von RPP63.)
Nur noch ergänzend:
(28.06.2024, 20:36)Gast 123 schrieb: was du da mit Const festgelegt hast ist mir auch ein Rätsel, das kollidiert aber mit VBA Schlüsselwörtern!
Hinter
allen Excel- und
VBA-Konstanten "verbergen" sich Zahlen.
Dies kann man sehr einfach mittels
?Konstante und Enter im Direktfenster überprüfen.
Code:
?vbRed
255
?xlPasteFormulasAndNumberFormats
11
?xlPasteValues
-4163
Und wie oben bereits geschrieben, verbietet es sich, einen reservierten Konstantennamen zu missbrauchen und ihn dann mit einem "falschen" Wert zu überschreiben.
Deklarierte Variablen/Konstanten haben im Ablauf des Makros nämlich Vorrang.
Mal ein bewusst dämliches Beispiel:
Code:
Sub Tinnef()
Dim vbRed As Long
vbRed = vbGreen
ActiveCell.Interior.Color = vbRed
End Sub
→ Die aktive Zelle wird
grün und nicht etwa
rot formatiert.
Two Cents,
Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag.
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Registriert seit: 12.03.2016
Version(en): Excel 2003
Hallo
@Ralf wie sagte mal ein grieschicher Gelehrter: "ich weiss, das ich nichts weiss..." Wieder was gelernt!
Das mit dem Direktfenster habe ich nie ausprobiert. Interessant ...
mfg Gast 123