• 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.

Geeft geen foutmelding bij ingave van datum met kalender.

Status
Niet open voor verdere reacties.

danny147

Terugkerende gebruiker
Lid geworden
29 apr 2007
Berichten
4.744
Beste, ;)

VRAAG 1

In de gegevensvalidatie heb ik een foutmeding in gestoken, van zodra je een datum ingeeft die buiten een bepaald kwartaal ligt.

Als ik nu een datum kiest via kalender, dan geeft hij die foutmelding niet.
Handmatig doet hij dat wel.

Is dit op te lossen met VBA, achter de code van de kalender ???

Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Not Intersect(Target, Range("D6:G81")) Is Nothing Then
Userform1.Show
Target.Offset(0, 1).Select
End If
End Sub


VRAAG 2

Als ik nu een datum handmatig wil ingeven moet hij er automatisch het jaartal bijvoegen.

Nu is het wel zo dat we deze datums ingeven in december voor het jaar daarop.
Dus als ik 25/1 in geef in december 2010, dat hij dan 25/1/2011 tevoorschijn geeft op het blad.

Dit zou waarschijnlijk ook met een code moeten uitgevoerd worden ???

Groetjes Danny. :thumb:
 
Volgens mij is dit het probleem Danny.

Handmatig gebruik je Target, en met de Userform niet.
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
 
Beste HSV, ;)

Wat moet het dan worden ?

Private Sub Worksheet_BeforeDoubleClick(Target As Range, Cancel As Boolean) ?

Groetjes Danny. :thumb:
 
Hoi Danny

Heb je een voorbeeldbestandje.
 
Beste HSV ;)

Zie bestandje.

* Handmatig wil ik dat ik enkel DAG en MAAND ingeef en dat hij automatisch het jaartal erbij zet uit cel I3 en de foutmelding weergeeft.

* Via kalender wil ik dat hij de foutmelding weergeeft die in de gegevensvalidatie staat.

Groetjes Danny. :thumb:
 

Bijlagen

Bedoel je zoiets.

Code:
Private Sub Calendar1_Click()
 ActiveCell = Calendar1.Value
  ActiveCell.NumberFormat = "ddd dd/mm/yyyy"
    Me.Hide
 If ActiveCell.Offset(, 17).Text = "ONWAAR" Then
   MsgBox "foutmelding"
    ActiveCell.ClearContents
  End If
End Sub
en deze;
Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Not Intersect(Target, Range("D6:G81")) Is Nothing Then
   Userform1.Show
     Target.Offset(0, 1).Select
Else
   MsgBox "Men kan enkel een datum plaatsen in bereik D6:G81 "
  End If
End Sub
 
Beste HSV, ;)

Dit werkt perfect op een puntje na.

Bij het handmatig invoeren van de datums moet hij het jaartal vermeerderen met 1

Groetjes Danny. :thumb:
 
Hoe moet ik me dat voorstellen Danny.
(vermeerderen met 1)
 
Danny, ik kan je wel een code maken die het jaartal automatisch verhoogd met 1jaar, maar dan geldt deze ook voor invoer via je userform. Ik betwijfel sterk of je een onderscheid kan maken tussen invoer via code of manueel. Wie mij het tegendeel kan bewijzen, graag natuurlijk :D
 
Beste warme bakkertje en HSV, ;)


@ warme bakkertje

Dat zou inderdaad goed uitkomen als het zowel manueel als met de userform het jaartal verhoogd met 1.

De gegevens worden steeds ingevoerd in december voor het jaar nadien.
Mocht er dan eventueel een datum worden aangepast na december, dan kan ik dat manueel nog veranderen hoop ik.

@ HSV

De bedoeling is dat ik gewoon een datum ingeef, enkel de dag en maand (Vb. 1-3) dan op enter klik, dat hij dan "di 1-3-2012" invult.
Het gegeven voor het jaartal moet hij halen uit cel I3 +1 (2011+1)

Groetjes Danny. :thumb:
 
Laatst bewerkt door een moderator:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
    If Not Intersect(Target, Range("D6:G81")) Is Nothing Then
        If Not Year(Target) = Year(Now) + 1 Then Target = Format(Day(Target) & "/" & Month(Target) & "/" & Year(Now) + 1, "ddd dd-mm-yyyy")
    End If
End Sub
 
Of in de code van Rudi.
Code:
If Not Year(Target) = [I3].Value + 1 Then Target = Format(Day(Target) _
        & "/" & Month(Target) & "/" & [I3].Value + 1, "ddd dd-mm-yyyy")
 
Beste HSV en Warme bakkertje ;)

Ik ben er nog steeds niet uit :(

Zie bestandje.

Zoals vermeld in vorige posten wil ik dat ik bij het invoegen van een datum het jaartal dat vermeld staat in I3 het jaar wordt.

Vb: ik typ 1-3 en druk daarna op enter --> Excel heeft mij dan 1-3-2011.
Ik zet het jaartal in I3 op 2012 en excel moet mij dan 1-3-2012 geven na het intypen van 1-3.

Kunnen jullie dit nog even aanpassen.

Groetjes Danny. :thumb:
 

Bijlagen

Je moet de change-event in het moduleblad zetten en niet in ThisWorkbook Danny. :)

edit:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
 On Error Resume Next
    If Not Year(Target) = [I3].Value Then Target = Format(Day(Target) _
        & "/" & Month(Target) & "/" & [I3].Value, "ddd dd-mm-yyyy")
    End Sub
 
Laatst bewerkt:
Beste HSV ;)

Inderdaad, zo werkt het wel.

Bedankt. :thumb:

Groetjes Danny. :thumb:
 
Beste HSV ;)

Volgend probleem is opgedoken !

Als ik een datum wil wissen dan geeft hij 30-12-2012 terug en geen lege cel.

Typt men een spatie dan zou het ook opgelost kunnen worden, maar dat is niet de bedoeling hé.

Groetjes danny. :thumb:
 
Hoi Danny,

Hellaas had ik dat niet getest. :o
Kleine aanpassing. :)

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
 On Error Resume Next
 If Target.Value <> "" Then
    If Not Year(Target) = [I3].Value Then Target = Format(Day(Target) _
        & "/" & Month(Target) & "/" & [I3].Value, "ddd dd-mm-yyyy")
        End If
    End Sub
 
Beste HSV ;)

Dit probleem is opgelost, nu heb ik een andere ontdekt, nl:

Als je een datum wil veranderen bv. 22-4-2011 dit is een vrijdag en verander nu de datum naar 20-4-2011, dan blijft het een vrijdag :confused:

Opnieuw de datum invullen, dan is het uiteraard goed.

Groetjes Danny :thumb:
 
Als je een verandering aanbrengt, is dit een 'Change', dus ik begrijp je handelingen die je uitvoert niet.

Net een testje gedaan, maar werkt prima.:o
 
Laatst bewerkt:
Beste HSV ;)

Heb me misschien verkeerd uitgedrukt.

Ga op een cel staan en verander de dag in de formulebalk (enkel de dag) en klik op enter.
Doe dit een paar malen achter elkaar met dezelfde dag of een andere en je zal zien dat het een keertje fout gaat.

Groetjes Danny. :thumb:
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan