Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Anzeige
Inhaltsverzeichnis

Makro verbessern

Forumthread: Makro verbessern

Makro verbessern
20.02.2026 12:08:23
McCormick
Hallo Freunde von Excel,
da ich meist nur mit dem Makrorekorder arbeite, wollte ich wissen, ob das unten genannte Makro "kürzer" vielleicht kürzer sein könnte. Habe schon einiges entfernt, was man hier im Forum so liest.
Sub ZahlenEinfuegen()


'Sprung zur ersten Zelle
Sheets("Daten").Select
Range("A2").Select

Sheets("Auswertung").Select
Range("C20:H20").Select
Selection.Copy
Sheets("Tabelle1").Select
Range("E5").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("E5").Select
Sheets("Auswertung").Select
Application.CutCopyMode = False
Range("I20").Select
Selection.Copy
Sheets("Tabelle1").Select
Range("E3").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("D3").Select
Sheets("Auswertung").Select
Application.CutCopyMode = False
Range("B20").Select
Selection.Copy
Sheets("Tabelle1").Select
Range("L6").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("A1").Select
Sheets("Auswertung").Select
Application.CutCopyMode = False
Range("A1").Select


End Sub
Es funktioniert jedenfalls einwandfrei.

Danke, falls es Hilfe geben sollte.
Mekki
Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro verbessern
20.02.2026 12:30:21
Eifeljoi 5
Hallo

Meinst du so vielleicht?
Sub ZahlenEinfuegen()

With Sheets("Tabelle1")
.Range("E5").Resize(1, 6).Value = Sheets("Auswertung").Range("C20:H20").Value
.Range("E3").Value = Sheets("Auswertung").Range("I20").Value
.Range("L6").Value = Sheets("Auswertung").Range("B20").Value
End With
End Sub
Anzeige
AW: Makro verbessern
20.02.2026 12:40:52
snb
Sub M_snb()

With Sheets("Tabelle1")
.Range("E5").Resize(, 6).Value = Sheets("Auswertung").Range("C20:H20")
.Range("E3").Value = Sheets("Auswertung").Range("I20").Copy
.Range("L6").Value = Sheets("Auswertung").Range("B20")
End With
End Sub

Anzeige
AW: Makro verbessern | Danke es hilft
20.02.2026 12:48:38
McCormick
Hallo miteinander,
hat geklappt und hilft.
AW: Makro verbessern
20.02.2026 13:34:31
daniel
Hi
der Markorecorder zeichnet häufig dinge auf, die wir Anwender zwar tun müssen, weil uns die Technik (Maus) dazu zwingt, die aber im Makro unnötig sind.
Dazu gehört, dass wir, wenn wir einen Befehl auf ein Objekt anwenden wollen (z.B. Zelle kopieren) zuerst die Zelle auswählen und dann den Befehl dazu auswählen und auf die Auswahl anwenden
Range("C20:H20").Select

Selection.Copy

das ist in VBA nicht notwendig, wir müssen das Objekt nicht vorher auswählen, wir können auch den Befehl direkt an das Objekt anhängen:
Range("C20:H20").Copy


der nächste Schritt ist, dass wir, wenn wir Objekte mit der Maus auswählen, dies nur tun können, wenn diese Objekte sichtbar sind.
Wenn wir also eine Zelle auswählen wollen, müssen wir zuerst das Tabellenblatt auswählen, auf dem diese Zelle liegt
    Sheets("Auswertung").Select

Range("C20:H20").Select
Selection.Copy

in VBA können wir auch Objekte ansprechen, die nicht sichtbar sind, wenn wir vollständig beschreiben, wo sie liegen:
Sheets("Auswertung").Range("C20:H20").Copy

hier fehlt eigentlich noch das Workbook, aber wenn man nur mit einem Workbook arbeitet, kann man das als schon voreingestellt betrachten.
arbeitet man mit mehreren Dateien, ist es aber sinnvoll, dieses mit anzugeben.


bei manchen Befehlen, wie z.B. Paste zeichnet der Recorder auch eine Menge von Parametern mit auf
.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks :=False, Transpose:=False

diese sind, wenn man nur die Standaroperation ausführt, nicht immer notwendig und man kann häufig die Parameter weglassen, wenn man sie nicht explizit benötigt, weil VBA dann die Standardwerte annimmt, hier würde dann ausreichen
.PasteSpecial Paste:=xlPasteValues

allerdings muss man aufpassen, in manchen fällen kann das weglassen auch mal zu unerwünschten Effekten führen, bspw wenn bei .FIND beim Weglassen bestimmter Parameter kein Standardwert verwendet wird, sondern die zuletzt gemachte Einstellung.
auch verbessert hier das Weglassen nicht die Performance des Makros, sondern verkürzt nur den Code, also eher was, wenn man nicht mehr aufzeichnet, sondern selber schreibt.

dann gibt es noch Befehle, die unötig sind und die man weglassen kann wie
Application.CutCopyMode = False

hier würde es auch ausreichen, dieses nur einmal am Ende des Makros auszuführen.

Gruß Daniel
Anzeige
AW: Makro verbessern
20.02.2026 22:20:26
Tom
Guten Abend daniel,

als meist nur mitleser der Beiträge, finde ich es sehr gut, wie du in deinem Beitrag einige Sachen so ausführlich dargelegt hast.
Das wünschte ich mir mehr.
Keine Frage, hier im Forum wird, wenn vernünftig gefragt wird, sehr kompetent geholfen.
Ein dickes Lob und Danke an die wissenden Menschen, die hier antworten.

Tom
Anzeige
AW: Makro verbessern
20.02.2026 14:39:34
snb
Oder:
Sub M_snb()

With Sheets(1)
.Range("E5") = "=Auswertung!C20"
.Range("E5").AutoFill .Range("E5:J5")
.Range("E3") = "=Auswertung!I20"
.Range("L6") = "=Auswertung!B20"
End With
End Sub

Anzeige
Anzeige
Live-Forum - Die aktuellen Beiträge
Datum
Titel
14.05.2026 13:31:09
14.05.2026 09:50:42
13.05.2026 19:14:18