Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1700to1704
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 ohne Format - VBA

Kopieren ohne Format - VBA
18.07.2019 08:45:29
Donna
Hallo liebe Forumsgemeinde!
Ich muss ein Makro schreiben, dass Daten aus einer Tabelle in ein Formular per Klicken auf einen Button kopiert.
Ich hab es schon so weit allein geschafft, dass das Makro die letzte beschriebene Zeile in der Tabelle „Basis“ findet, das Tabellenblatt „Vorlage“ kopiert und hinten anhängt. Danach die Kopie umbenennt, die Daten aus der letzten beschriebenen Zeile aus der Tabelle „Basis“ in bestimmte Zellen der Kopie „Vorlage“ einträgt.
Das Problem entsteht genau an dieser Stelle. Es soll nur der Wert der Zelle übernommen werden und nicht die Formatierung. Ich hab natürlich schon einige Hilfestellungen dazu gefunden, nur leider funktioniert nicht eine davon in meinem Makro.
With Worksheets („Basis“)
.Range(„A“ & LZ1).Copy Worksheets(Blattname).Range(„C“).PasteSpecial ...
Sobald ich PasteSpecial wieder raus nehme läuft der Kopiervorgang wieder ohne Probleme. Egal was ich hinter PasteSpecial schreibe es kommt die Meldung „Fehler beim Kompilieren: Erwartet: Anweisungsende“.
PS: LZ1 wurde vorher als letzte Zelle von Spalte A definiert und Blattname wurde als Variable für den neuen Namen des kopierten Tabellenblattes definiert. Wie gesagt ohne PasteSpecial klappt alles einwandfrei.
Ich hoffe ihr könnt mir weiterhelfen, einen Weg zu finden nur die Werte ohne die Formate zu kopieren.

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: extra Codezeile
18.07.2019 08:52:25
hary
Moin
PasteSpecial muss in eine neue Codezeile.
.Range(„A“ & LZ1).Copy
Worksheets(Blattname).Range(„C“).PasteSpecial ...

gruss hary
AW: extra Codezeile
18.07.2019 09:21:47
Rainer
Hallo Donna,
mit einem kleinen "Umweg" lässt sich das kopieren beschleunigen.
Kopiere den Wert erst in eine Variable und schreibe diese in die Zielzelle.
Außerdem hast du auch beim Ziel den Range nicht genau angegeben, es fehlt die Zeilennummer.

Dim CopyARR()
CopyARR = Worksheets („Basis“).Range(„A“ & LZ1)
Worksheets(Blattname).Range(„C“ & ZEILE) = CopyARR
Gruß, Rainer
Anzeige
AW: extra Codezeile
18.07.2019 09:37:18
Donna
Also ich hatte das auch schon probiert (vorgestern oder so). Hab es trotzdem nochmal probiert und es hat wieder so nicht funktioniert. Es kam „Laufzeitfehler 9: Index außerhalb des gültigen Bereichs“
Ich habe unterschiedliche Varianten probiert, weil ich auf meinen Recherchen auf unterschiedliche Schreibweisen gestoßen bin:
Variante 1:
.Range(„A“ & LZ1).Copy
Wirksheets(Blattname).Range(„C4“).PasteSpecial (PastexlPasteValues)
Variante 2:
... .PasteSpecial Paste:=xlPasteValues
Hat beides nicht funktioniert
AW: extra Codezeile
18.07.2019 09:42:50
Nepumuk
Hallo,
versuch es mal so:
Worksheets(Blattname).Range("C4").Value = .Range("A" & LZ1).Value

Wenn es immer noch nicht geht, dann zeig mal die ganze Prozedur.
Gruß
Nepumuk
Anzeige
AW: extra Codezeile
18.07.2019 09:59:13
Donna
Ich gebe hier mal die komplette Prozedur an.
Dim wsBasis As Worksheet
Dim wsVorlage As Worksheet
Dim i As Integer
Dim LZ1 As Long 'letzte Zeile der Spalte A
Dim LZ2 As Long 'lezte Zeile der Spalte B
Dim LZ3 As Long 'lezte Zeile der Spalte C
Dim LZ4 As Long 'letzte Zeile der Spalte D
Dim LZ5 As Long 'letzte Zeile der Spalte E
Dim LZ6 As Long 'letzte Zeile der Spalte F
Dim LZ7 As Long 'letzte Zeile der Spalte G
Dim LZ8 As Long 'letzte Zeile der Spalte H
Dim Blattname As String
'Tabellenblatt "Vorlage" kopieren
i = Sheets.Count
Sheets("Vorlage").Copy After:=Sheets(i)
Worksheets("Basis").Select
SpalteA = "A"
LZ1 = ActiveSheet.Cells(Rows.Count, SpalteA).End(xlUp).Row 'letzte Zeile der Spalte A ermitteln
Sheets(Sheets.Count).Select
ActiveSheet.Name = Worksheets("Basis").Range("A" & LZ1)
Blattname = ActiveSheet.Name
With Worksheets("Basis")
.Range("A" & LZ1).Copy
Worksheets(Blattname).Range("C4").PasteSpecial Paste:=xlPasteValues
End With
End Sup
PS: wie schon gesagt ohne PasteSpecial funktioniert die Prozedur ohne Probleme, sie tut genau das was sie soll. Ich möchte nur die Werte ohne ihre Formatierung kopieren
Anzeige
AW: extra Codezeile
18.07.2019 10:10:38
Nepumuk
Hallo,
ich kann keinen Fehler finden, außer dass die Variable SpalteA nicht deklariert ist. Wie lautet denn die Fehlermeldung und welche Zeile markiert der Debugger?
Gruß
Nepumuk
AW: extra Codezeile
18.07.2019 10:20:57
Donna
Er markiert mir die erste Zeile nach With Worksheet...
Aber das macht er erst seitdem PasteSpecial dabei ist. Vorher hat er mir keinen Fehler angezeigt.
Mal kommt der Fehler „Index außerhalb des Wertebereichs“ und mal kommt „Paste-Methode konnte nicht ausgeführt werden“.
Einmal hatte das Marko ja schon fast alles richtig gemacht. Da hat es die 1. Zelle ohne Formatierung an die richtige Stelle gesetzt, aber dann bei der zweiten Zelle die eingefügt werden sollte kam „Paste-Methode konnte nicht ausgeführt werden“ oder so ähnlich.
Wie sollte die SpalteA denn definiert werden, wenn es daran liegen sollte?
Anzeige
AW: extra Codezeile
18.07.2019 10:30:41
Nepumuk
Hallo,
so wird das nichts. Kannst du eine Mustermappe hochladen mit ein paar Spieldaten damit ich das an deiner Mappe testen kann. Denn in meiner Testmappe funktioniert es ja wie gewünscht. Und die Variable SpalteA musst du als String deklarieren, aber daran kann es nicht liegen.
Gruß
Nepumuk
AW: extra Codezeile
18.07.2019 11:14:11
Donna
Doch es lag daran, dass SpalteA nicht definiert war. Ich hab sie einfach mal definiert und dann ging es plötzlich ohne Probleme.
Vielen Dank für deine Hilfe!
Einen schönen Tag noch!
AW: extra Codezeile
18.07.2019 09:45:43
hary
Moin
Gibt es das Blatt "Blattname"?
Der Blattname muss in Gaensepfoten.
Evtl. Schreibfehler im Blattnamen? Leerzeichen aus versehen Davor/dahinter?
gruss hary
Anzeige
AW: oder einfach nur Value
18.07.2019 09:39:54
hary
Moin nochemal
Nimm einfach Value. Hinter C fehlt evtl. die Zeilennummer
Worksheets(Blattname).Range(„C“).Value = .Range(„A“ & LZ1).Value

gruss hary

304 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige