Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1424to1428
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: Berechnung Monatsname

VBA: Berechnung Monatsname
06.05.2015 16:21:49
Kai
Hi,
ich habe mir eine Übersicht zusammen gestellt.
Übersicht

 ABCDE
1    Abrechnung
2    Jahr
3    2015
4    Monat
5    10.Oktober


Per Makro Button kann ich die Werte ändern.

Sub Jahr_UP()
Range("E3").Value = Range("E3").Value + 1
End Sub
Sub Jahr_DOWN()
Range("E3").Value = Range("E3").Value - 1
End Sub
Sub Monat_UP()
If Range("E5") = "01.Januar" Then
Range("E5").Value = "02.Februar"
ElseIf Range("E5") = "02.Februar" Then
Range("E5") = "03.März"
ElseIf Range("E5") = "03.März" Then
Range("E5") = "04.April"
ElseIf Range("E5") = "04.April" Then
Range("E5") = "05.Mai"
ElseIf Range("E5") = "05.Mai" Then
Range("E5") = "06.Juni"
ElseIf Range("E5") = "06.Juni" Then
Range("E5") = "07.Juli"
ElseIf Range("E5") = "07.Juli" Then
Range("E5") = "08.August"
ElseIf Range("E5") = "08.August" Then
Range("E5") = "09.September"
ElseIf Range("E5") = "09.September" Then
Range("E5") = "10.Oktober"
ElseIf Range("E5") = "10.Oktober" Then
Range("E5") = "11.November"
ElseIf Range("E5") = "11.November" Then
Range("E5") = "12.Dezember"
ElseIf Range("E5") = "12.Dezember" Then
Range("E5") = "01.Januar"
Else
Range("E5") = "01.Januar"
End If
End Sub
Sub Monat_DOWN()
If Range("E5") = "12.Dezember" Then
Range("E5").Value = "11.November"
ElseIf Range("E5") = "11.November" Then
Range("E5").Value = "10.Oktober"
ElseIf Range("E5") = "10.Oktober" Then
Range("E5").Value = "09.September"
ElseIf Range("E5") = "09.September" Then
Range("E5").Value = "08.August"
ElseIf Range("E5") = "08.August" Then
Range("E5").Value = "07.Juli"
ElseIf Range("E5") = "07.Juli" Then
Range("E5").Value = "06.Juni"
ElseIf Range("E5") = "06.Juni" Then
Range("E5").Value = "05.Mai"
ElseIf Range("E5") = "05.Mai" Then
Range("E5").Value = "04.April"
ElseIf Range("E5") = "04.April" Then
Range("E5").Value = "03.März"
ElseIf Range("E5") = "03.März" Then
Range("E5").Value = "02.Februar"
ElseIf Range("E5") = "02.Februar" Then
Range("E5").Value = "01.Januar"
ElseIf Range("E5") = "01.Januar" Then
Range("E5").Value = "12.Dezember"
Else
Range("E5").Value = "01.Januar"
End If
End Sub

Und übder ein Link öffne ich die Arbeitsmappe.

Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
On Error GoTo Fehler
Dim appExcel As Excel.Application
Set appExcel = CreateObject("Excel.Application")
With appExcel
.Visible = True
If Target.Parent.Address = "$E$5" Then
On Error GoTo Fehler
If Range("$E$5") = "01.Januar" Then
Datei = "H:\" & Range("$E$3").Text & "\01_Januar_" & Range("$E$3").Text & ".xls"
.Workbooks.Open Datei, , , , "password", , True
ElseIf Range("$E$5") = "02.Februar" Then
Datei = "H:\" & Range("$E$3").Text & "\02_Februar_" & Range("$E$3").Text & ".xls"
.Workbooks.Open Datei, , , , "password", , True
ElseIf Range("$E$5") = "03.März" Then
Datei = "H:\" & Range("$E$3").Text & "\03_März_" & Range("$E$3").Text & ".xls"
.Workbooks.Open Datei, , , , "password", , True
ElseIf Range("$E$5") = "04.April" Then
Datei = "H:\" & Range("$E$3").Text & "\04_April_" & Range("$E$3").Text & ".xls"
.Workbooks.Open Datei, , , , "password", , True
ElseIf Range("$E$5") = "05.Mai" Then
Datei = "H:\" & Range("$E$3").Text & "\05_Mai_" & Range("$E$3").Text & ".xls"
.Workbooks.Open Datei, , , , "password", , True
ElseIf Range("$E$5") = "06.Juni" Then
Datei = "H:\" & Range("$E$3").Text & "\06_Juni_" & Range("$E$3").Text & ".xls"
.Workbooks.Open Datei, , , , "password", , True
ElseIf Range("$E$5") = "07.Juli" Then
Datei = "H:\" & Range("$E$3").Text & "\07_Juli_" & Range("$E$3").Text & ".xls"
.Workbooks.Open Datei, , , , "password", , True
ElseIf Range("$E$5") = "08.August" Then
Datei = "H:\" & Range("$E$3").Text & "\08_August_" & Range("$E$3").Text & ".xls"
.Workbooks.Open Datei, , , , "password", , True
ElseIf Range("$E$5") = "09.September" Then
Datei = "H:\" & Range("$E$3").Text & "\09_September_" & Range("$E$3").Text & ".xls"
.Workbooks.Open Datei, , , , "password", , True
ElseIf Range("$E$5") = "10.Oktober" Then
Datei = "H:\" & Range("$E$3").Text & "\10_Oktober_" & Range("$E$3").Text & ".xls"
.Workbooks.Open Datei, , , , "password", , True
ElseIf Range("$E$5") = "11.November" Then
Datei = "H:\" & Range("$E$3").Text & "\11_November_" & Range("$E$3").Text & ".xls"
.Workbooks.Open Datei, , , , "passowrd", , True
ElseIf Range("$E$5") = "12.Dezember" Then
Datei = "H:\" & Range("$E$3").Text & "\12_Dezember_" & Range("$E$3").Text & ".xls"
.Workbooks.Open Datei, , , , "password", , True
End If
End If
End With
Exit Sub
Fehler:
MsgBox "Die Datei konnte nicht gefunden werden!", vbCritical, ""
End Sub

Könnte man das auch Vereinfachen?
Danke schon im Voraus.
LG Kai

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
  • Ja.
    06.05.2015 16:44:36
    Michael
  • 06.05.2015 17:35:07
    Michael
Anzeige
Ja.
06.05.2015 16:44:36
Michael
Hallo Kai,
aber nicht ohne Datei, weil ich mir dann einige Mühe sparen kann.
Vorab nur soviel: ich würde mir irgendwo "rechts" ein paar Hilfszellen mit Tag/Monat/Jahr anbringen, aus denen Du dir die angezeigten Angaben zusammenstöpselst. Da kannst Du in Deinem Makro direkt hochzählen und sparst Dir jede Menge elseifs (die Du übrigens auch durch select case ersetzen könntest, das schreibt sich übersichtlicher).
Anstelle der ganzen Reihe von

If Range("$E$5") = "01.Januar" Then
Datei = "H:\" & Range("$E$3").Text & "\01_Januar_" & Range("$E$3").Text & ".xls"
.Workbooks.Open Datei, , , , "password", , True
kannst Du den String mit replace direkt generieren. Codeschnipsel zum Testen anbei:

Sub test()
Dim monat As String, jahr As String
monat = Replace(Range("E5"), ".", "_")
jahr = Range("E3").Text
Datei = "H:\" & jahr & "\" & monat & "_" & jahr & ".xls"
MsgBox Datei
End Sub

Das funktioniert in einem Rutsch mit *allen* Monaten und sieht mit den zwei Variablen monat und jahr schon mal deutlich übersichtlicher aus.
Schöne Grüße,
Michael

Anzeige
Rest
06.05.2015 17:35:07
Michael
Hallo Kai,
hier nun doch der Rest...
In H4 schreibst Du die Nr. des Monats, und in E4 die Formel: =DATUM(E3;H4;H4) und formatierst sie "benutzerdefiniert" mit TT.MMMM (das gibt es schon fertig, Du mußt nur das Leerzeichen nach dem "." entfernen).
Dann laufen die nachfolgenden Makros:

Sub Monat_UP()
Range("h4") = Range("h4") Mod 12 + 1
End Sub
Sub Monat_Down()
If Range("h4") = 1 Then
Range("h4") = 12
Else
Range("h4") = Range("h4") - 1
End If
End Sub
Du mußt nur im Code vom vorhergehenden Post auch bei E5 den angezeigten "Text" auslesen, also die Zeile komplett:
monat = Replace(Range("E5").Text, ".", "_")
Das sollte es im Wesentlichen gewesen sein, oder?
Schöne Grüße,
Michael
Anzeige

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige