Worksheet_Change, If-code aan toevoegen.

Status
Niet open voor verdere reacties.

Visara

Gebruiker
Lid geworden
10 mrt 2019
Berichten
217
Goedemiddag,

Situatie:
Ik gebruik een code die na het invoeren van 1230 12:30 maakt. Gebruikers kunnen zo snel tijdstippen invoeren.
Wanneer de gebruiker geen fouten maakt gaat dit goed.
Als de gebruiker iets invult wat niet de bedoeling is, dan komt er een popup die vraagt om de code te Beëindigen of te bekijken.
Dat is onwenselijk. De gebruiker kan het bestand nu alleen nog afsluiten en opnieuw opstarten, daar de Code wordt beëindigd. Alle invoer wordt na beëindiging code veranderd in 0:00.

Mijn vraag:
Kan iemand mij aan een code helpen die toegevoegd kan worden aan de code die ik gebruik?
Ik zou graag het volgende willen:
Als de gebruiker alleen 1,2,3 of 4 cijfers invoert, dan graag 'mijn' code uitvoeren.
Als de gebruiker iets anders invoert, dan het zojuist ingevoerde wissen (hier heb ik hulp bij nodig) en dmv een Messagebox vertellen wat er is gebeurd (daar kom ik wel uit).
Het is prettig als de gebruiker, na het wegklikken van de Messagebox, gelijk kan beginnen met typen in de cel waar het om ging. (hier heb ik hulp bij nodig)

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
  If Not Intersect(Target, Range("A:A, C:C")) Is Nothing And Not IsEmpty(Target) And Target.Cells.Count = 1 Then
    Application.EnableEvents = False
    Target = Replace(Format(Target / 100, "00.00"), ",", ":")
    Application.EnableEvents = True
  End If
End Sub

Met vriendelijke groet,
Visara
 

Bijlagen

  • VraagVisaraMacro.xlsm
    16,2 KB · Weergaven: 21
Maak er eens dit van:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
  If Not Intersect(Target, Range("A:A, C:C")) Is Nothing And Not IsEmpty(Target) And Target.Cells.Count = 1 Then
    Application.EnableEvents = False
    On Error GoTo Foutje
    Target = Replace(Format(Target / 100, "00.00"), ",", ":")
    Application.EnableEvents = True
  End If
[COLOR="#FF0000"]Exit Sub[/COLOR]  

Foutje:
    Application.Goto Target
    MsgBox "Onjuiste ingave", vbCritical, "Tijd ingeven"
    Target.ClearContents
    Application.EnableEvents = True
End Sub
 
Laatst bewerkt:
Ja, dat werkt bij de situatie die ik schetste. Mooi, dank.

Maar er is een situatie waarin dit mis gaat:
In sommige gevallen wil de gebruiker een kolom met tijden 'door tellen', of hoe dat ook heet.

Voorbeeld:
In A1 12:00
In A2 12:15
Als de gebruiker velden A1:A2 samen selecteert en dan naar beneden sleept wil je 12:30, 12:45, 13:00 etc krijgen in velden A3, A4 etc.
Dat werkt nu niet meer. Sterker nog, ik krijg de foutmelding popup niet weggeklikt.
Is dat op te lossen? Kan je instellen dat de 'doorkopieer'/'sleep handeling' (hoe heet dat?) geen problemen geeft?
 
Dat werkt hier anders prima in je eigen document.
Voor de zekerheid wel een kleine aanpassing gedaan in #2.
 
Laatst bewerkt:
Het ging met de eerste code echt niet hoor, moest excel zelfs via Taakbeheer afsluiten.

Na die aanpassing doet 'ie het wel :)
Bedankt! :)
Hier ga ik en enkele collega's blij van worden.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan