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

VBA-Obtimierung

Forumthread: VBA-Obtimierung

VBA-Obtimierung
21.02.2017 12:48:34
Franz
Hallo Zusammen,
ich möchte in meinem Stundennachweis für jeden Monat/Jahr die Einträge auswerten. Zwar habe ich für den Monat Januar schon was kreiert, vielleicht kann mir aber jemand sagen wie ich es einfacher machen könnte, da dies für jeden Monat notwendig.
Hier mein bescheidener Versuch:
Private Sub Worksheet_Activate()
If ActiveWorkbook.Name = "Stdnw_2017.01.xlsm" Then _
Range("C8") = Tabelle0306.Range("AL23") / Tabelle01.Range("P5")
If ActiveWorkbook.Name = "Stdnw_2017.01.xlsm" Then _
Range("E8") = Tabelle0306.Range("AL24")
If ActiveWorkbook.Name = "Stdnw_2017.01.xlsm" Then _
Range("G8") = Tabelle0306.Range("AL21")
If ActiveWorkbook.Name = "Stdnw_2017.01.xlsm" Then _
Range("H8") = Tabelle0306.Range("AL22")
If ActiveWorkbook.Name = "Stdnw_2017.01.xlsm" Then _
Range("D8") = Tabelle0306.Range("AL25")
If ActiveWorkbook.Name = "Stdnw_2017.01.xlsm" Then _
Range("K8") = Tabelle0103.Range("Q37")
If ActiveWorkbook.Name = "Stdnw_2017.01.xlsm" Then _
Range("B8") = Tabelle0305.Range("L11")
End Sub
Gruß, Franz
Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA-Obtimierung
21.02.2017 13:05:42
ChrisL
Hi Franz
Im Kopiervorgang (C8-AL23, E8-AL24, usw.) ist kein Muster zu erkennen und wie das Makro für die Folgemonate aussieht wissen wir nicht. Somit lassen sich nur ein paar If's wegrationalisieren.
Private Sub Worksheet_Activate()
If ActiveWorkbook.Name = "Stdnw_2017.01.xlsm" Then
Range("C8") = Tabelle0306.Range("AL23") / Tabelle01.Range("P5")
Range("E8") = Tabelle0306.Range("AL24")
Range("G8") = Tabelle0306.Range("AL21")
Range("H8") = Tabelle0306.Range("AL22")
Range("D8") = Tabelle0306.Range("AL25")
Range("K8") = Tabelle0103.Range("Q37")
Range("B8") = Tabelle0305.Range("L11")
End if
End Sub

cu
Chris
Anzeige
AW: VBA-Obtimierung
21.02.2017 13:20:10
Franz
Vielen Dank Chris für die schnelle Hilfe.
Wäre es möglich die einzelnen Monate zu "deklarieren". z.B.
Dim Januar As Long
Dim Februar As Long
usw.
Januar = "Stdnw_2017.01.xlsm"
Februar = "Stdnw_2017.02.xlsm"
(oder so ähnlich)
Der Hintergrund, ich muss jedes Jahr die Jahreszahl anpassen.
Gruß, Franz
Anzeige
AW: VBA-Obtimierung
21.02.2017 13:25:33
Franz
Hier ein Nachtrag,
die einzelnen Monate wiederholen sich:
Private Sub Worksheet_Activate()
If ActiveWorkbook.Name = "Stdnw_2017.01.xlsm" Then _
Range("C8") = Tabelle0306.Range("AL23") / Tabelle01.Range("P5")
If ActiveWorkbook.Name = "Stdnw_2017.01.xlsm" Then _
Range("E8") = Tabelle0306.Range("AL24")
If ActiveWorkbook.Name = "Stdnw_2017.01.xlsm" Then _
Range("G8") = Tabelle0306.Range("AL21")
If ActiveWorkbook.Name = "Stdnw_2017.01.xlsm" Then _
Range("H8") = Tabelle0306.Range("AL22")
If ActiveWorkbook.Name = "Stdnw_2017.01.xlsm" Then _
Range("D8") = Tabelle0306.Range("AL25")
If ActiveWorkbook.Name = "Stdnw_2017.01.xlsm" Then _
Range("K8") = Tabelle0103.Range("Q37")
If ActiveWorkbook.Name = "Stdnw_2017.01.xlsm" Then _
Range("B8") = Tabelle0305.Range("L11")
If ActiveWorkbook.Name = "Stdnw_2017.02.xlsm" Then _
Range("C9") = Tabelle0306.Range("AL23") / Tabelle01.Range("P5")
If ActiveWorkbook.Name = "Stdnw_2017.02.xlsm" Then _
Range("E9") = Tabelle0306.Range("AL24")
If ActiveWorkbook.Name = "Stdnw_2017.02.xlsm" Then _
Range("G9") = Tabelle0306.Range("AL21")
If ActiveWorkbook.Name = "Stdnw_2017.02.xlsm" Then _
Range("H9") = Tabelle0306.Range("AL22")
If ActiveWorkbook.Name = "Stdnw_2017.02.xlsm" Then _
Range("D9") = Tabelle0306.Range("AL25")
If ActiveWorkbook.Name = "Stdnw_2017.02.xlsm" Then _
Range("K9") = Tabelle0103.Range("Q37")
If ActiveWorkbook.Name = "Stdnw_2017.02.xlsm" Then _
Range("B9") = Tabelle0305.Range("L11")
usw.
Anzeige
AW: VBA-Obtimierung
21.02.2017 13:35:47
ChrisL
Hi Franz
Private Sub Worksheet_Activate()
Dim Zeile As Long
If ActiveWorkbook.Name Like "Stdnw_2017.*.xlsm" Then
Zeile = Mid(ActiveWorkbook.Name, 12, 2) + 7
Range("C" & Zeile) = Tabelle0306.Range("AL23") / Tabelle01.Range("P5")
Range("E" & Zeile) = Tabelle0306.Range("AL24")
Range("G" & Zeile) = Tabelle0306.Range("AL21")
Range("H" & Zeile) = Tabelle0306.Range("AL22")
Range("D" & Zeile) = Tabelle0306.Range("AL25")
Range("K" & Zeile) = Tabelle0103.Range("Q37")
Range("B" & Zeile) = Tabelle0305.Range("L11")
End If
End Sub

cu
Chris
Anzeige
AW: VBA-Obtimierung
21.02.2017 13:51:45
Franz
Ich werd's versuchen...
Danke!
Gruß
Franz
AW: VBA-Obtimierung
21.02.2017 13:29:36
ChrisL
Hi Franz
Monate deklarieren kann man schon (im Beispiel wäre es als String). Aber vielleicht reicht auch:
Private Sub Worksheet_Activate()
If ActiveWorkbook.Name Like "Stdnw_2017.*.xlsm" Then
Range("C8") = Tabelle0306.Range("AL23") / Tabelle01.Range("P5")
Range("E8") = Tabelle0306.Range("AL24")
Range("G8") = Tabelle0306.Range("AL21")
Range("H8") = Tabelle0306.Range("AL22")
Range("D8") = Tabelle0306.Range("AL25")
Range("K8") = Tabelle0103.Range("Q37")
Range("B8") = Tabelle0305.Range("L11")
End If
End Sub

cu
Chris
Anzeige
AW: VBA-Obtimierung
21.02.2017 13:39:41
Franz
Hi Chris,
mit like wird es nicht funktionieren, da ich die Daten aus einem Formular-Sheet fortlaufend in ein anders Blatt kopiere.
Gruß, Franz
;

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige