VBA Code Optimierung
12.08.2019 12:50:36
Dugimon
ich erarbeite derzeit ein Makro die mir Daten aus einem Arbeitsblatt genannt "Kopiervorlage" in ein Arbeitsblatt genannt "Datenbank" kopiert.
Im Arbeitsblatt Kopiervorlage liegen die Daten in einer Zeile und mit teilweise zusammenhängenden Zellen vor. Für das Arbeitsblatt Datenbank benötige ich diese Spaltenweise und ohne zusammenhängende Zellen.
Bisher habe ich es wie folgt gelöst:
(Ablauf was passiert)
Mein Bisheriger VBA Code
Sub Erreichbarkeit()
Dim KopierVorlage As Worksheet
Dim ZW As Worksheet
Dim Datenbank As Worksheet
Dim Calls As Range
Dim CallsAngenommen As Range
Dim Erreichbarkeit As Range
Dim Servicelevel As Range
Set KopierVorlage = Sheets("KopierVorlage")
Set ZW = Sheets("ZW")
Set Datenbank = Sheets("Datenbank")
Set Calls = Range("F4:AQ4")
Set CallsAngenommen = Range("F16:AQ16")
Set Erreichbarkeit = Range("F12:AQ12")
Set Servicelevel = Range("F13:AQ13")
'Kopieren der gesuchten Daten aus der Kopiervorlage
KopierVorlage.Range("F4:AQ4,F12:AQ12,F13:AQ13,F16:AQ16").Copy
ZW.Range("A2").PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:=False, Transpose:= _
True
ZW.Range("A2:D40").UnMerge
ZW.Range("A7,A13,A15,A16,A20,A22,A23,A24,A25,A26").EntireRow.Delete Shift:=x1Up
ZW.Range("A1:D1") = "Eine Überschrift"
ZW.Range("A1:D40").Interior.ColorIndex = 3
ZW.Range("A1:D40").Borders.LineStyle = None
'Die Angebotenen Calls kopieren
ZW.Range("A1:A31").Copy
Datenbank.Range("C36").Insert Shift:=xlToRight 'Verschiebt alle bestehenden einträge nach _
Rechts. (Links steht das aktuellste Datum)
'Die Erreichbarkeit kopieren
ZW.Range("B1:B31").Copy
Datenbank.Range("c3").Insert
'Den Servicelevel kopieren
ZW.Range("C1:C31").Copy
Datenbank.Range("C103").Insert
'Die angenommen Calls kopieren
ZW.Range("D1:D31").Copy
Datenbank.Range("C70").Insert
Set KopierVorlage = Nothing
Set ZW = Nothing
Set Datenbank = Nothing
Set Calls = Nothing
Set Erreichbarkeit = Nothing
Set Servicelevel = Nothing
End Sub
Dieser Code funktioniert zwar und dank diversen Foren Posts hier konnte ich schon ein paar punkte optimieren aber ich bin mir sicher das es noch immer punkte gibt die optimiert werden können. Daher meine Frage an die Community: Was ist gut in diesem Code und was könnte besser (Einfacher, Schneller) gelöst werden. Besonders frage ich mich ob es nicht einen weg gibt diesen Zwischenschritt mit dem Arbeitsblatt "ZW" einzusparen.
Ich freu mich auf die Antworten.
Grüße
Dugimon