Clever-Excel-Forum

Normale Version: VBA Code komprimieren?
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo zusammen,

nachfolgendes Makro benutze ich um aus Tabelle Depot eine Zeile ausschneide und in Tabelle Depotkonto an erster freier Zeile wieder einfügen. Da das Makro lange läuft, wäre meine Frage, ob man das Ganze etwas entschlacken kann und somit schneller macht. Hier mein Code:
Sub verkaufen()
Dim startzeile As Integer

On Error GoTo Fehler

startzeile = InputBox("Wählen Sie die Zeilen-Nr. ihrer Aktie (Startzeile 4 bis Endzeile 33)")

Application.ScreenUpdating = False
With Worksheets("Depot")
If .Cells(startzeile, 4).Value = "" Or Not wksExits(.Cells(startzeile, 4).Value) Then
MsgBox "Fehler, bitte den zu löschenden Aktienwert markieren", vbExclamation
Exit Sub
End If
End With

Sheets("Depot").Select
Range(Cells(startzeile, 1), Cells(startzeile, 13)).Copy
Sheets("Depotkonto").Cells(Sheets("Depotkonto").Cells(Rows.Count, 1).End(xlUp).Row + 1, 1).PasteSpecial xlPasteValues
Application.CutCopyMode = False
Sheets("Depot").Select
Range(Cells(startzeile, 1), Cells(startzeile, 13)).Delete
Range("N4").Select
Selection.AutoFill Destination:=Range("N4:N33"), Type:=xlFillDefault
Range("N4:N33").Select

Call zeile_einfügen
Application.ScreenUpdating = True

Exit Sub
Fehler:
MsgBox "Ein Fehler ist aufgetreten, da die Angaben falsch waren! Bitte starten Sie die Abfrage neu!"

End Sub

Sub zeile_einfügen()
Sheets("Depot").Range("A32:N32").Select
Selection.AutoFill Destination:=Range("A32:N33"), Type:=xlFillDefault
Range("A32:N33").Select
Range("A3").Select
End Sub




VBA/HTML - CodeConverter für Office-Foren
AddIn für Excel/Word 2000-2010 - komplett in VBA geschrieben von Lukas Mosimann
Projektbetreuung durch mumpel


Code erstellt und getestet in Office 14

Danke schon mal im Voraus!!!
Hallo Bernie,

nimm mal bitte kein Tool für die codedarstellung - die haben ein Zeilenende, was für die extra-Leerzeilen sorgt ... Es reicht, wenn Du den code nach dem Einfügen markierst und auf das # drückst ...

Ansonsten würde ich erst mal empfehlen, dass Du versuchst, die Zeilen mit Range ... Select mit der nächsten zu vereinigen.

Bei den Blättern mit .Select würde ich mal nachschauen, ob Du nicht eventuell schon auf dem jeweiligen Blatt bist. Dazu den code am besten schrittweise durchgehen.
Falls Du beim Makrostart definitiv auf dem Blatt Depot bist, kannst Du Dir da auch noch etwas sparen beim With ... und auch danach.

und bei diesen beiden Anweisungen unmittelbar nacheinander brauch ich doch nichts zu sagen, oder? :21:
Range("A32:N33").Select
Range("A3").Select
Hallo André,

Danke für deine Vorschläge. Mit den Recorder-Aufzeichnungen und anschließender Bearbeitung habe ich das eine oder andere mal noch Probleme.