• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Alleen datum kunnen invullen in TextBox in Userform

  • Onderwerp starter Onderwerp starter HJ25
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

HJ25

Gebruiker
Lid geworden
30 jan 2013
Berichten
304
Hallo,

is het mogelijk om d.m.v. een vba code achter een TextBox in een Userform te plaatsen er voor te zorgen dat er in de TextBox alleen maar een datum ingevuld kan worden en dat wanneer er iets anders ingevuld wordt hier een foutmelding van komt?
 
Code:
Private Sub TextBox1_afterupdate()
    If Not IsDate(TextBox1.Value) Then MsgBox "geen datum": Exit Sub
End Sub

Je kan dan uiteraard ook een bepaald formaat verplichten bv. backslash of streepje tussen getallen.
 
Bedankt. Enig probleempje is dat wanneer ik het eerste getal invul dat dan direct al het scherm met "geen datum" er voor komt. Kan dit ook aangepast worden zodat er eerst wat ingevuld kan worden en wanneer ik dan ergens buiten de TextBox klik dat er dan gecontroleerd wordt?
 
Heb je wel zoals Rudi zegt TextBox1_AfterUpdate() gebruikt en niet TextBox1_Change() ?
 
Iets beter opletten is soms al genoeg om tot een oplossing te komen... Bedankt edmoor ;) en Rudi bedankt voor de code!
 
Waarom zou je de gebruiker geen lijst met geldige data aanbieden via een combobox of listbox ?
 
Omdat dit gebruikt wordt voor een invoerscherm voor de planning. Is het dan wel handig om een combobox of listbox te gebruiken aangezien elke datum aangegeven moet kunnen worden?
 
Okee inderdaad handig, maar moet ik dan "ComboBox1.List = Array(Date, Date + 1, Date + 2)" gebruiken? En waar moet ik dit neerzetten?
 
Code:
Private Sub UserForm_Initialize()
    ComboBox1.List = [index(text(date(year(today()),1,4)-weekday(date(year(today()),1,4),2)+row(1:365),"dd-mm-yyyy"),)]
End Sub

Zet een CB op je UF en plaats dan bovenstaande in de Formuliermodule.
 
Helemaal top! Bedankt Rudi! Zou je misschien nog kunnen uitleggen hoe ik hem moet aanpassen wanneer ik ipv één jaar bijvoorbeeld tot twee jaar vooruit wil kunnen aangeven? Welk deel moet ik dan wijzigen?
 
Laatst bewerkt:
Wat dacht je van:

Code:
Private Sub UserForm_Initialize()
    ComboBox1.List = [index(text(date(year(today()),1,4)-weekday(date(year(today()),1,4),2)+row(1:[COLOR="#FF0000"]730[/COLOR]),"dd-mm-yyyy"),)]
End Sub
 
Ah top! Bedankt snb!

Nu ik deze vraag hier toch heb staan: ik heb ook nog een scherm waarin gegevens opgezocht kunnen worden. Hierbij moet het mogelijk zijn om tot één jaar terug en twee jaar vooruit te kunnen kijken gezien vandaag. Wanneer ik morgen het bestand open moet er vanaf die dag één jaar terug en twee jaar vooruit gekeken kunnen worden. Iemand die een oplossing heeft?
 
Laatst bewerkt:
Aangezien je vraagstelling nogal vaag is kan je hier al mee starten.
Betreft het 1 dag in het verleden of toekomst of een periode ? Moet er gefilterd worden in de gegevens ? Hoe worden de gegevens gepresenteerd in je formulier ?
Code:
Sub tst()
    MsgBox Year(Now()) - 1
    MsgBox Year(Now()) + 2
End Sub
 
Laatst bewerkt:
Ik heb even snel het bestand aangepast waarbij mijn vraagstelling hopelijk wat duidelijker wordt. Wanneer je op "Startscherm planning" klikt komt er een scherm tevoorschijn waarbij je kan kiezen wat je wil gaan doen.

Wanneer je op "Aanvraag zoeken" klikt komt er een scherm naar voren, welke nog leeg is. Hier moet op de één of andere manier een mogelijkheid in komen om naar een aanvraag te zoeken bijvoorbeeld zoeken op contractnummer of op opleiding/gebruiker of dus op datum. Hierbij moet het mogelijk zijn om te kunnen zoeken tot één jaar terug en twee jaar vooruit gezien vandaag. Dit zou betekenen dat ik tot en met 23 mei 2012 terug en tot en met 23 mei 2015 vooruit zou moeten kunnen zoeken. Morgen, 24 mei, zou ik tot en met 24 mei 2012 terug en tot en met 24 mei 2015 vooruit moeten kunnen zoeken. Ik heb alleen geen idee hoe ik dit voor elkaar kan krijgen. De manier waarop de gegevens in het formulier te zien zijn maakt niet uit.

P.s. wanneer je probeert gegevens in te voeren dan wordt er een fout aangegeven. Mocht iemand een oplossing weten dan hoor ik dat graag!
 

Bijlagen

1 jaar terug, 2 vooruit:

Code:
Private Sub UserForm_Initialize()
    ComboBox1.List = [index(text(date(year(today()),1,4)-weekday(date(year(today()),1,4),2)-365+row(1:1095),"dd-mm-yyyy"),)]
End Sub
 
Bedankt! Klein probleempje: ik moet als ik dit er in zet terug kunnen kijken tot 23 mei 2012, maar ik kan terugkijken tot 1 januari 2012. Kan dit opgelost worden?
 
Ja hoor, maar dat kun je nu zelf op basis van de vergelijking van de verschillende voorbeelden.
 
P.s. wanneer je probeert gegevens in te voeren dan wordt er een fout aangegeven. Mocht iemand een oplossing weten dan hoor ik dat graag!


verander
Code:
With Activesheet
in
Code:
With Sheets("Planningsoverzicht")
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan