Maand nummer in textbox omzetten naar naam van de maand

Status
Niet open voor verdere reacties.

masala09

Gebruiker
Lid geworden
6 aug 2012
Berichten
886
Beste allen,

Graag wil ik weten hoe ik een waarde, bijvoorbeeld 04 in een TextBox, kan omzetten naar de tekst April.


Ik wil bijvoorbeeld als tekst in een msgbox hebben: "De door u ingevoerde maand: April telt maximaal 30 dagen."

Onderstaand de code die ik heb.

Code:
    Dim Dag As Long
    Dim Maand As Long
    Dim Jaar As Long
    Dim AantalDagen As Long
        
    Dag = TextBox1.Value
    Maand = TextBox2.Value
    Jaar = Label23.Caption
    AantalDagen = DateSerial(Jaar, Maand + 1, 1) - DateSerial(Jaar, Maand, 1)
    
'Datumcontrole
    If DateSerial(Jaar, Maand, Dag) > Date Then
        MsgBox ("Uw ingevoerde datum ligt in de toekomst."), vbOKOnly, "Datuminvoer ongeldig"
    Else
        If TextBox1.Value > AantalDagen Then
            MsgBox ("De door u ingevoerde maand: " & [B][COLOR="#FF0000"]Maand[/COLOR][/B] & " telt maximaal " & AantalDagen & " dagen."), _
                vbOKOnly, "Datuminvoer ongeldig"
                
            TextBox1.Value = vbNullString
            TextBox1.SetFocus
        Else
            B = Format(DateSerial(Jaar, Maand, Dag), "d mmmm yyyy")
            C = DatePart("ww", CDate(B) - Weekday(CDate(B), 2) + 4, 2, 2)
            A = Application.Proper(WeekdayName(Weekday(B, vbMonday), False, vbMonday))
            
            Label8.Caption = A & ", " & B & " ( Week: " & C & " )"
            
            CommandButton5.Enabled = True
        End If
    End If

Format(Maand, "mmmm"), werkt niet.

Ik hoor het wel.
 
Laatst bewerkt:
Je zou voor elke maand een if statement kunnen maken bijvoorbeeld

If maand = 1 Then
Textbox1.text = jan

If maand = 2 then
Textbox1 = feb

Enzovoort
 
Hai, bedankt voor je reactie. Ja dat kan ik inderdaad doen, maar met alle respect, dan had ik mijn vraag niet gesteld.

Er moet en code bestaan om een maandnummer om te zetten naar een maandnaam.
 
Bij geen alternatieven de volgende code.
Code:
    Dim Dag As Long
    Dim Maand As Long
    Dim Jaar As Long
    Dim AantalDagen As Long
        
    Dag = TextBox1.Value
    Maand = TextBox2.Value
    Jaar = Label23.Caption
    AantalDagen = DateSerial(Jaar, Maand + 1, 1) - DateSerial(Jaar, Maand, 1)
    
'Datumcontrole
    If DateSerial(Jaar, Maand, Dag) > Date Then
        MsgBox ("Uw ingevoerde datum ligt in de toekomst."), vbOKOnly, "Datuminvoer ongeldig"
    Else
        If TextBox1.Value > AantalDagen Then
            MsgBox ("De door u ingevoerde maand: " & [B][COLOR="#FF0000"]MontName(Maand)[/COLOR][/B] & " telt maximaal " & AantalDagen & " dagen."), _
                vbOKOnly, "Datuminvoer ongeldig"
                
            TextBox1.Value = vbNullString
            TextBox1.SetFocus
        Else
            B = Format(DateSerial(Jaar, Maand, Dag), "d mmmm yyyy")
            C = DatePart("ww", CDate(B) - Weekday(CDate(B), 2) + 4, 2, 2)
            A = Application.Proper(WeekdayName(Weekday(B, vbMonday), False, vbMonday))
            
            Label8.Caption = A & ", " & B & " ( Week: " & C & " )"
            
            CommandButton5.Enabled = True
        End If
    End If

Voor gemakshalve: MontName(Maand)
 
Wees slim: maak een listbox of combobox met alleen maar geldige data; dan hoef je achteraf niets meer te controleren.

bijv. alle 28 dagen vóór vandaag:

Code:
ComboBox1.List = [index(text(today()-29+row(1:28),"dd-mm-yyyy"),)]
 
Laatst bewerkt:
Maar een antwoord op de vraag is natuulijk ook mogelijk:
Code:
MsgBox ("De door u ingevoerde maand: " & Format(DateSerial(Year(Date), Maand, 1), "mmmm") & " telt maximaal " & AantalDagen & " dagen.")
 
Beste Snb, Ik ben niet zo weg van al dat zoek werk in comboboxen. Het is inderdaad een goede mogelijkheid, echter dit is minder snel dan dat ik voor ogen heb. Ik heb al een spinbutton aangebracht waar ik in stappen kan sorteren. Feitelijk doet dit hetzelfde als die van jou. Ook met die mogelijkheid kan ik geen fouten maken. Het stukje code is om een versnelde handmatige invoer te krijgen. Wel heb je mijn vraag direct beantwoord welke ik in een later stadium in een ander userform wilde gebruiken en waar ik nog niet het antwoord van had.

OctaFish. Jouw wijze werkt ook.

Omdat ik de maand met hoofdletter wil laten beginnen, komt er een stukje code bij:

Code:
Aanpassing op jouw code:

[COLOR="#FF0000"]StrConv([/COLOR]Format(DateSerial(Year(Date), Maand, 1), "mmmm")[COLOR="#FF0000"], vbProperCase)[/COLOR]

Aanpassing op mijn code:

[COLOR="#FF0000"]StrConv([/COLOR]MonthName(Maand)[COLOR="#FF0000"], vbProperCase)[/COLOR]

Echter vraag ik mij dan nu weer af wat beter is. Het gebruik van MontName of DateSerial. Het enige wat ik nu zie is dat het eerste een kortere code kent dan het tweede.

Ook jij bedankt.
 
Laatst bewerkt:
Je hoeft niet te zoeken maar gewoon in te voeren (heet niet voor niets 'combo' box; als het niet klopt krijg je meteen feedback.
 
Laatst bewerkt:
Snb, ik denk dat ik begrijp wat jij bedoelt, maar dan moet ik, dacht ik, de eigenschappen wel er naar aanpassen.

Ik snap wat je bedoelt. Je typt een letter en dan volgt de rest wat er in de buurt komt.
 
Blijkbaar hebben 'jouw' gebruikers een heel andere intuïtie dan die ik ooit ben tegengekomen.

Gebruik het toetsenbord voor invoer, gebruik de muis voor invoer, gebruik de pijltjestoetsen voor invoer.
Gebruik 'Del' om de combobox te legen.
 

Bijlagen

  • __intuitie snb.xlsb
    16,9 KB · Weergaven: 34
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan