Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

VBA - Kopiervorgang optimieren
#1
Hey Leute!

Ich habe mir einen Kopiervorgang zusammengebastelt, jedoch wohl nicht auf der effizientesten Basis (:
Beim Abarbeiten flackert der Bildschirm kurz bzw. Excel springt während des Voganges durch die Tabellen hin und her.
Man könnte wohl dieses "Refreshen" abstellen und am Ende der Prozedur wieder aktivieren, jedoch bringt mich das nicht weiter, meine Programmierkentnnisse zu verbessern (:

Die Prodzedur sieht folgendermaßen aus:
Code:
Sub btnApply()

Dim LastColumn As Long

LastColumn = tblData.Cells(21, Columns.Count).End(xlToLeft).Column

  tblInputMask.Range("F4").Copy
  tblData.Cells(2, LastColumn + 2).PasteSpecial xlPasteValues
 
  tblInputMask.Range("C4").Copy
  tblData.Cells(3, LastColumn + 2).PasteSpecial xlPasteValues
 
  tblInputMask.Range("C6").Copy
  tblData.Cells(4, LastColumn + 2).PasteSpecial xlPasteValues
 
  tblInputMask.Range("I8").Copy
  tblData.Cells(6, LastColumn + 2).PasteSpecial xlPasteValues
 
  tblInputMask.Range("I9").Copy
  tblData.Cells(7, LastColumn + 2).PasteSpecial xlPasteValues
 
  tblInputMask.Range("I10").Copy
  tblData.Cells(8, LastColumn + 2).PasteSpecial xlPasteValues
 
  tblInputMask.Range("I11").Copy
  tblData.Cells(9, LastColumn + 2).PasteSpecial xlPasteValues
 
  tblInputMask.Range("I12").Copy
  tblData.Cells(10, LastColumn + 2).PasteSpecial xlPasteValues
 
  tblInputMask.Range("I13").Copy
  tblData.Cells(11, LastColumn + 2).PasteSpecial xlPasteValues
 
  tblInputMask.Range("M2:O32").Copy
  tblData.Cells(21, LastColumn + 2).PasteSpecial xlPasteValues
 
  Worksheets("tblData").Columns("A:Z").AutoFit
   
  tblInputMask.Cells(4, "F").Value = tblInputMask.Cells(4, "F").Value + 1
 
End Sub
Einzelne Felder werden kopiert sowie am Ende ein Bereich.
Welchen Ansatz könnte ich noch verfolgen?
Beste Grüße
Joshua !
Antworten Top
#2
Moin!
Zitat:Beim Abarbeiten flackert der Bildschirm kurz bzw. Excel springt während des Voganges durch die Tabellen hin und her.

Sicherlich nicht wegen Deines hier eingestellten Codes.

Zitat:Welchen Ansatz könnte ich noch verfolgen?

Dazu müsste man die Mappe kennen.
Du kannst zwar I8:I13 als Bereich kopieren, aber anhand des Codes erkenne ich (noch) nicht die Intention.

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)
[-] Folgende(r) 1 Nutzer sagt Danke an RPP63 für diesen Beitrag:
  • joshua
Antworten Top
#3
(03.07.2017, 10:29)RPP63 schrieb: Moin!

Sicherlich nicht wegen Deines hier eingestellten Codes.


Dazu müsste man die Mappe kennen.
Du kannst zwar I8:I13 als Bereich kopieren, aber anhand des Codes erkenne ich (noch) nicht die Intention.

Gruß Ralf

Mit folgendem Ansatz konnte ich das Flackern entfernen:
Code:
  tblInputMask.Range("F4").Copy Destination:=tblData.Cells(2, LastColumn + 2)

Es ging bei der Frage um das generelle Kopieren (:
Antworten Top
#4
Wobei .Copy Destination
ja etwas anderes ist als
.Copy: .PasteSpecial xlPasteValues

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)
[-] Folgende(r) 1 Nutzer sagt Danke an RPP63 für diesen Beitrag:
  • joshua
Antworten Top
#5
(03.07.2017, 10:42)RPP63 schrieb: Wobei .Copy Destination
ja etwas anderes ist als
.Copy: .PasteSpecial xlPasteValues

Gruß Ralf

Jap, ist mir auch eben erst aufgefallen.

Dadurch, dass bestimmte Zellen eine Formatierung enthalten, kann ich dennoch nur PastSpecial benutzen :/
Antworten Top
#6
Bitte nicht immer zitieren, sondern den Button Antworten nutzen.
Bis auf die Möglichkeit, I8:I13 als Block zu kopieren, sehe ich kein Verbesserungspotential.
Und Application.Screenupdating = False schadet nix.
(übrigens braucht es NICHT wieder eingeschaltet werden, dies macht Excel nach Ablauf des Makros selbständig - auch, wenn die Online-Hilfe etwas anderes meint)

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)
Antworten Top
#7
Ich bedanke mich RPP63!
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste