Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: VBA erkennt keine englischen Monatsnamen

VBA erkennt keine englischen Monatsnamen
09.05.2013 17:33:25
Anna
Hallo alle zusammen,
ich brauche Hilfe bei der Programmierung eines Codes zur Berechnung der Anzahl der Tage eines Monates.
Mein Code sieht wie folgt aus
CurrentMonth = Month("1. " & "Februar")
CurrentYear = 2013
DaysInMonth = DateSerial(CurrentYear, CurrentMonth + 1, 1) - DateSerial(CurrentYear, CurrentMonth, 1)
MsgBox DaysInMonth
Ich hab hier mal bei CurrentMonth und CurrentYear einen Monat und ein Jahr reingeschrieben, im Programm sollen diese jedoch nachher variabel sein.
Der Code funktioniert auch einwandfrei solange ich mit deutschen Monatsbezeichnungen arbeite. Mein VBA ist auch auf deutsch. Mein Problem ist jetzt, dass ich aber englische Monatsbezeichnungen habe, also statt "Februar" steht dann da "February" usw. Ich habe mir auch schon überlegt einfach in einem Array, die Monate in deutsche immer umwandeln zu lassen, allerding soll das Programm für jemanden mit einer englischen Version von VBA geschrieben werden. Dort wiederum würden dann ja vermutlich die deutschen Monatsbezeichnungen nicht erkannt. Ich hätte daher gerne, dass es sowohl bei einer deutschen als auch englischen VBA laufen kann.
Gibt es die Möglichkeit, dass mein VBA einfach die englischen Monatsangaben erkennt? Oder irgendwelche anderen Ideen, wie man das lösen könnte?
Vielen Dank schonmal,
Grüße Anna

Anzeige

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

Betreff
Datum
Anwender
Anzeige
warum VBA ?
09.05.2013 18:17:13
Matthias
Hallo
Tabelle1

 AB
101.02.201328

Formeln der Tabelle
ZelleFormel
B1=TAG(DATUM(JAHR(A1); MONAT(A1)+1;))


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4
Gruß Matthias

Anzeige
AW: warum VBA ?
09.05.2013 18:30:52
Nepumuk
Hallo,
mach dir doch einfach eine kleine Funktion. Damit kannst du gleich mehrere Sprachen abfangen:
Private Function GetMontNumber(ByVal pvstrMontName As String) As Integer
    Select Case pvstrMontName
        Case "Januar", "Jenner", "January"
            GetMontNumber = 1
        Case "Februar", "Feber", "February"
            GetMontNumber = 2
            
            'usw
            
    End Select
End Function

Gruß
Nepumuk

Anzeige
Warum so umständlich, ...
09.05.2013 18:27:29
Luc:-?
…Anna,
das kann man doch bspw auch so machen: Sub Monatstage() Const txMon$ = "January February March …", testMon$ = "February", _ testJahr As Long = 2013 Dim CurrentMonth As Long, CurrentYear As Long, DaysInMonth As Long CurrentMonth = WorksheetFunction.Match(testMon, Split(txMon), 0) CurrentYear = testJahr DaysInMonth = DateSerial(CurrentYear, CurrentMonth + 1, 1) - _ DateSerial(CurrentYear, CurrentMonth, 1) MsgBox DaysInMonth End Sub Und, falls du das auch in deutsch brauchst, die deutschen Monatsnamen einfach mit Leerzeichen davor hinten an txMon anhängen und die CurrentMonth-Zuweisung noch um (… - 1) Mod 12 + 1 ergänzen.
Gruß Luc :-?

Anzeige
Monatsnamen englisch und deutsch
09.05.2013 18:37:35
Erich
Hi Anna,
noch eine VBA-Möglichkeit:

Option Explicit
Sub aTest()
Dim strMonat As String, iMon As Integer
Dim CurrentYear As Integer, DaysInMonth As Integer
strMonat = "February"
iMon = intMon(strMonat)
'   CurrentMonth = Month("1. " & strMonat)' nicht gebraucht, fehlerhaft
CurrentYear = 2012
DaysInMonth = Day(DateSerial(CurrentYear, iMon + 1, 0))
MsgBox DaysInMonth
End Sub
Function intMon(strMon As String)
Dim vMon ' As Variant
vMon = Application.Match(Left(strMon, 3), _
Split("Jan Feb Mär Apr Jun Jul Aug Sep Okt Nov Dez"), 0)
If IsError(vMon) Then _
vMon = Application.Match(Left(strMon, 3), _
Split("Jan Feb Mar Apr Jun Jul Aug Sep Oct Nov Dec"), 0)
If IsError(vMon) Then
intMon = CVErr(xlErrNA)
Else
intMon = vMon
End If
End Function
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich

Anzeige
Monatsnamen englisch oder deutsch - Korrektur
09.05.2013 18:40:20
Erich
Hi,
da hatte ioch doch den Wonnemonat vergessen...

Function intMon(strMon As String)
Dim vMon ' As Variant
vMon = Application.Match(Left(strMon, 3), _
Split("Jan Feb Mär Apr Mai Jun Jul Aug Sep Okt Nov Dez"), 0)
If IsError(vMon) Then _
vMon = Application.Match(Left(strMon, 3), _
Split("Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec"), 0)
If IsError(vMon) Then
intMon = CVErr(xlErrNA)
Else
intMon = vMon
End If
End Function
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich

Anzeige
AW: VBA erkennt keine englischen Monatsnamen
09.05.2013 19:44:07
Anna
Hey,
danke für die schnellen und vielen Antworten :-)
Ich bin immer wieder begeistert von den Leuten hier, die einem so nett Hilfe leisten.
Also ich hab jetzt die Variante von Luc genommen, da die für das was ich brauche am einfachsten erscheint. Funktioniert auch sehr gut. Die anderen Varianten werde ich mir mal merken und viell. wo anders einsetzen.
Schöne Grüße Anna

Anzeige
Na, dann viel Erfolg! ;-) Gruß owT
11.05.2013 12:22:14
Luc:-?
:-?
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

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