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

Inputbox gebruiken, indien geen invoer afsluiten zonder verandering

Status
Niet open voor verdere reacties.

Peer44

Gebruiker
Lid geworden
25 jan 2008
Berichten
224
Hallo,

ik probeer het volgende voor elkaar te krijgen:


Bekijk bijlage Map1.xlsm

een handmatige aanvangstijd wijziging:

op het tabblad tijdsplanning moet de aanvangstijd worden ingegeven
deze staat standaard op 05:45 deze wordt opgehaald van het tabblad standaardtijd. dmv =standaardtijd!C4

Wanneer dit echter moet worden aangepast kan men dmv een Macro "TijdWijzigen" de tijdaanpassen.
dit gaat goed, alleen als je wil annuleren wordt de verwijziging uit de cel B2 verwijderd.

Dit wil ik graag voorkomen, dus als men op annuleren drukt er ook werkelijk niets gebeurd, evt een bericht via msgbox "geen waarde ingegeven" zou leuk zijn.
Daarnaast wil ik dat er alleen maar een tijdstip kan worden ingegeven normaal werkt dit via Validatie, hoe kan dit verwerkt worden in een inputbox?

iemand een voorbeeld / oplossing.

alvast bedankt.



Code:
Option Explicit

Sub TijdWijzigen()
On Error GoTo Canceled

Range("aanvangstijd").Value = InputBox("wat is de aanvangstijd? Geef tijdstip in met dubbele punt tussen uren en minuten")

Canceled:
End Sub
 
Dat komt omdat alles wat jou macro doet is de waarde van de inputbox in de cel schrijven.

je zult een tussenstap moeten maken met een variabele zodat je een voorwaarde kunt opnemen. Ik heb de variable Starttijd genoemd en omdat jij Option Explicit hebt gebruikt moet je de deze variable ook declareren via Dim


Code:
Option Explicit

Sub TijdWijzigen()

Dim Starttijd As Long

On Error GoTo Canceled

[INDENT]
Starttijd = InputBox("wat is de aanvangstijd? Geef tijdstip in met dubbele punt tussen uren en minuten")

[INDENT]
If vbOK Then Range("aanvangstijd").Value = Starttijd[/INDENT][/INDENT]


Canceled:
End Sub
 
Laatst bewerkt:
Okee dat helpt inderdaad, nu het type als long gedefineerd is kan ik geen tijdstip in geven.
Hoe kan dat worden ingesteld tijds ingave moet zijn uu:mm ?
 
Laatst bewerkt door een moderator:
Option Explicit weghalen dan kun je de declaratie weghalen

of

Dim Starttijd As long veranderen in Dim Starttijd

evt. aanpassen naar

Code:
If vbOK Then Range("aanvangstijd").Value = Format(Starttijd, "hh:mm")
Niels
 
Laatst bewerkt:
Niels,

Ik heb beide opties geprobeerd,

het enige waar ik nu nog tegen aan loop is, wanneer er op cancel/annuleren wordt gedrukt de oorspronkelijke waarde uit de range wordt gewist.

Code:
Sub TijdWijzigen()

On Error GoTo Canceled
       Starttijd = InputBox("wat is de aanvangstijd? Geef tijdstip in met dubbele punt tussen uren en minuten")
        If vbOK Then Range("aanvangstijd").Value = Format(Starttijd, "HH:MM")
        
            If vbCancel Then GoTo Canceled
        
Canceled:
End Sub

Ik heb hier de regel voor toegevoegd
Code:
If vbCancel Then GoTo Canceled

de oorspronkelijke waarde in de cel moet zijn standaard: =standaardtijd!C4

alvast bedankt!
 
Code:
Sub TijdWijzigen()
    starttijd = InputBox("wat is de aanvangstijd? Geef tijdstip in met dubbele punt tussen uren en minuten")
    If starttijd = "" Then Exit Sub
    Range("aanvangstijd").Value = Format(starttijd, "HH:MM")
End Sub
 
Werkt perfect!

Allemaal hartstikke bedankt voor het meedenken.
Weer een probleem opgelost.

dank dank

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