Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1540to1544
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

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

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
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

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige