Live-Forum - Die aktuellen Beiträge
Datum
Titel
29.03.2024 13:14:12
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1312to1316
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 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

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

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

301 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige