VBA-code gevraagd Datum notatie in textbox

Status
Niet open voor verdere reacties.

jan excel

Gebruiker
Lid geworden
4 mrt 2007
Berichten
437
Hallo experts,

Via dit forum ben ik in het bezit gekomen van een kalender.
Deze wil ik in mijn project implementeren echter lukt niet helemaal zoals ik zou willen.

In het voorbeeld bestand klik je op Cmd-Button1 en dan verschijnt er een test userform.
In deze userform klik je op een Cmd-Button1 om een kalender zichtbaar te maken.
Vervolgens klik je op gewenste datum in deze kalender en deze wordt dan in textbox1 gezet.
Echter de datum notering is dan mm-dd-yy echter ik wil graag de notatie DD-MM-YY in textbox1 zien.

Het liefst zou ik ook de Cmdbutton1 laten vervallen om de kalender zichtbaar te laten worden.
In plaats daarvan zou ik de kalender zichtbaar willen laten worden zodra er in textbox1 wordt geklikt en
als dan de datum is geselecteerd dat deze dan wel in textbox1 wordt gezet met de notatie dd-mm-yy.


Zie het voorbeeld bestand dan is e.e.a. wel duidelijk denk ik.
Bekijk bijlage voorbeeld1a.xlsx


Alvast bedankt.
Jan Excel
 
beste SNB,

Bedankt voor je reactie echter niet tot een oplossing gekomen.
Mijn VBA kennis is blijkbaar onvoldoende om het zelf op te lossen, ondanks de link die je heb gepost.
Misschien wil je mij de oplossing bieden of iemand anders.

In ieder geval bedankt.
Jan E
 
Waar denk jij dat het userform is gebleven in een werkboek met de extensie .xlsx ?
 
Jan,

Code:
userform1.TextBox1 = [COLOR=#ff0000]DateValue([/COLOR]ThisButton[COLOR=#ff0000])[/COLOR]
 
Je kunt je codepagina een heel stuk korter maken als je van de knopcode een functie maakt:

Code:
Function DatumMaken(Knop As Variant)
    ChkDate (Knop)
    UserForm1.TextBox1 = DateValue(Knop)
    Unload Me
End Function

Code:
Private Sub D1_Click()
    Call DatumMaken(D1.ControlTipText)
End Sub
...
Code:
Private Sub D42_Click()
    Call DatumMaken(D422.ControlTipText)
End Sub
Bovendien is het aanpassen/uitbreiden dan een stuk simpeler.
 
En in Userform1:

Code:
Private Sub cmdCancel_Click()
   Unload Me
End Sub

Private Sub cmdOK_Click()
   Sheets("activiteitsuren").Cells(Rows.Count, 1).End(xlUp).Offset(1).Resize(, 2) = Array(TextBox1.Value, TextBox2.Value)

  TextBox1.Text = ""
  TextBox2.Text = ""
End Sub

Private Sub CommandButton1_Click()
    CalendarFrm.Show
End Sub


Maar voor een 'simpel' voorbeeld hoe weinig code eigenlijk nodig is, zie de bijlage.
 

Bijlagen

  • __calendar class snb.xlsm
    33,3 KB · Weergaven: 289
Laatst bewerkt:
Goede morgen SNB , OctaFish en HSV,

HSV sorry dat ik niet jou heb bedankt ik zie nu pas dat jij deze code (userform1.TextBox1 = DateValue(ThisButton) had geplaatst.
Ik dacht dat dit de oplossing was echter als ik in de kalender op de knoppen 1 t/m 12 okt (de knoppen D3 t/m D14) klik komt in textBox1 de notatie MM-DD-YY en de overige de notatie DD-MM-YY wat dus goed is. Wie weet hoe dit op te lossen

De verkorte versie userform1 die SNB heeft geplaatst heb ik inmiddels geïmplementeerd dank hiervoor.

De Verkorte versie OCtaFish proberen te implementeren echter dit lukt mij niet, toch te weinig kennis VBA.
OctaFisch zou je deze voor mij in de code willen zetten ?

Zie update bijlage

Bekijk bijlage voorbeeld1a.xlsm

Iedereen bij voorbaat dank,
Jan
 
Als je de formulieropzet van snb gebruikt, dan moet je die variant aanroepen. Ik heb slechts jou oorspronkelijke code gepakt, daar een functie van gemaakt, en de oorspronkelijke code vervangen door de regel die de functie aanroept. Dus dit:
Code:
Private Sub D1_Click()
    ThisButton = D1.ControlTipText
    ChkDate
    userform1.TextBox1 = ThisButton
    Unload Me
End Sub
vervang je door dit:
Code:
Private Sub D1_Click()
    Call DatumMaken(D1.ControlTipText)
End Sub
En dat doe je dan voor elke knop.
En de functies
Code:
Function DatumMaken(Knop As Variant)
    ChkDate (Knop)
    UserForm1.TextBox1 = DateValue(Knop)
    Unload Me
End Function
Code:
Private Sub ChkDate(ThisButton As Variant)
    If Month(ThisButton) - 1 = CB_Mth.ListIndex Then CB_Mth.ListIndex = Format(ThisButton, "m") - 1
    CB_Yr = Year(ThisButton)
End Sub

plak je op een willekeurige plek in de module. Of in een nieuwe module.
 
Laatst bewerkt:
Hoi Allen,

De codes van OctaFish geïmplementeerd echter nu wordt altijd de datum vandaag in textbox1 gezet.
Zal waarschijnlijk een simpele oplossing zijn echter ik zie het niet.

Zie bijlageBekijk bijlage voorbeeld1a.xlsm

OctaFish wat doe ik nog niet goed ?


groet,
jan E
 
Hoi Allen,

De code van voorbeeld kalender van SNB heb ik nu geïmplementeerd en dit voldoet ook.
Hierbij wil ik ieder bedanken voor het mee denken en inbreng.
Zet de status op opgelost.

groet,
Jan E
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan