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

Message Box bij invullen cel

Status
Niet open voor verdere reacties.

NiekvanMeer

Gebruiker
Lid geworden
30 sep 2013
Berichten
123
Beste mensen!

Ik zit met een probleempje.
Ik ben er nu al een tijdje mee bezig, maar ik krijg het niet voor elkaar.

Ik zoek namelijk een vba code die voor mij het volgende doet:

Wanneer een lege cel in de range A1:A100 ingevuld wordt, dan moet er een messagebox verschijnen.
Hier staat in: "Heb je rekening gehouden met het mogelijk af destilleren van grondstof?"
Dan moet de persoon ja of nee aanklikken en bij ja blijft de ingevulde waarde staan. Bij nee blijft de cel leeg.

Nog mooier zou zijn wanneer de persoon de waarde in de message box in moet vullen en dat die waarde in de desbetreffende cel terecht komt.
Maar volgens mij gaat dat niet.

Hopelijk kunnen jullie mij helpen :)

Vast bedankt

Niek
 
Excel heeft nog wel wat meer in de aanbieding dan messageboxen hoor.
Met een messagebox (het woord zegt het) wordt louter een bericht getoond.
Om invoer vragen kan (het woord zegt het) met een inputbox (maar het kan ook met een formulier, dat is wat bewerkelijker). Zie de helpfile vba van Excel, waarin dat allemaal prima wordt uitgelegd.
 
Daar heb je gelijk in ExcelAmateur.
Laten we maar een betere oplossing geven dan die op die ander site, er wordt immers gevraagd:
Nog mooier zou zijn wanneer de persoon de waarde in de message box in moet vullen en dat die waarde in de desbetreffende cel terecht komt.
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Range("A1:A100"), Target) Is Nothing Then
Target.Value = InputBox("Vul een waarde in en houd rekening" & Chr(10) & _
"met afdistillatie van de grondstof.")
If WorksheetFunction.IsNumber(Target.Value) Then
Exit Sub
Else
Target.ClearContents
End If
End If
End Sub
Het woord 'afdestilleren' wordt weliswaar veel gebruikt, maar is geen goed Nederlands denk ik.
 
Laatst bewerkt:
Bedankt voor jullie reactie!
Zaterdag ben ik in de gelegenheid dit te testen.
Sorry voor dat ik niet vermeld had dat ik op een ander forum dezelfde vraag stelde.

@zapatr. Het is eigenlijk 'weg destilleren', maar dat is nu eenmaal de spreektaal op het bedrijf ;)
 
Bij deze getest.
Of het werkt niet, of ik doe iets verkeerd.
Waarschijnlijk het tweede :)

Ik moet deze code toch gewoon kopiëren en dan Visual Basic in de excel sheet openen?
Dan de code er in plakken en opslaan?

Wanneer ik dat doe dan gebeurd er niks wanneer ik de iets in de verwezen cellen type.

Wat doe ik hier verkeerd?
 
Hi Niek,

Heb je de code in een module geplaatst ipv achter het tabblad ?

Joske
 
De code moet NIET in een module maar behoort bij het werkblad.
Probeer dit voorbeeld.
 

Bijlagen

  • Zapatr - NiekvanMeer.xlsm
    13,2 KB · Weergaven: 248
Laatst bewerkt:
Dat is vreemd.
Wordt in jouw Excel wel toegestaan dat macro's worden uitgevoerd?
Zie je geen balk bovenin waarin daarvan een melding komt?
 
Naamloos.png
Correctie,

Ik krijg een pop-up wanneer ik op een lege cel klik.

Hetgeen ik daarin invul resulteert in een foutmelding.
Als ik op annuleren klik krijg ik ook een foutmelding.
Beide foutmeldingen zeggen: "Typen komen niet overeen"
 
Laatst bewerkt:
Je kunt met die code pas getallen invoeren als ze eerst in de inputbox zijn ingevuld, niet eerder. En als je op een cel klikt in A1:A100 waarin al wat staat (eerder ingevoerd m.b.v. de inputbox), dan verschijnt opnieuw die inputbox en kun je eventueel die waarde wijzigen.
De inputbox behoort te verschijnen onmiddellijk nadat je op een cel in A1:A100 hebt geklikt, dus zonder dat er nog iets is ingevuld in A1:A100 (dat wil je immers). Als je in de inputboxbox een getal invoert (alleen dan) en je klikt op Ok, dan moet dat getal in de aangeklikte cel verschijnen. Er behoren geen foutmeldingen te komen. Is er in jouw Excel misschien een andere macro actief (een macro die in de persoonlijke werkmap staat bijvoorbeeld)?
 
Hetgeen in het veld ingevuld wordt komt wel in de cel te staan, maar wanneer ik op OK klik (of op annuleren) verschijnt dus de genoemde foutmelding.
Er staan geen macro's oid actief.

Vreemd genoeg gaat het wel in je meegestuurde file..
 
Je schrijft: "Vreemd genoeg gaat het wel in je meegestuurde file.."
Dat kan dan toch echt niets anders betekenen dan dat er met jouw Excel wat aan de hand is.
 
Ik zie nu pas de afbeelding die je bij bericht #12 hebt geplaatst.
Kijk naar de opmaak van de cellen in A1:A100, zoals je in de macro kunt zien wordeen allen GETALLEN als invoer geaccepteerd. Als de opmaak niet in orde is, kan dat voor een foutmelding zorgen.
 
Dank je zapatr, ik zie nu wat het probleem is.
De cellen die ik wil invullen zijn samengevoegde cellen.

A1/A2 ; A3/A4 ; A5/A6 etc..

Is daar iets tegen te beginnen?
 
Laatst bewerkt:
De cellen die ik wil invullen zijn samengevoegde cellen.
A1/A2 ; A3/A4 ; A5/A6 etc..
Is daar iets tegen te beginnen?
Ja, met onderstaande macro. Je kunt daar nog zaken aan toevoegen, door bv. de tekst in de inputbox aan te passen of bij foutieve invoer de inputbox opnieuw te laten verschijnen.
Bij samengevoegde cellen moet je met vba erg goed opletten, want fouten liggen dan op de loer. Maar deze macro geeft geen foutmelding:
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Range("A1:A100"), Target) Is Nothing Then
'Deze macro werd geschreven door Zapatr
Dim mynumber
mynumber = InputBox("Vul een waarde in en houd rekening" & Chr(10) & "met afdistillatie van de grondstof.")
If IsNumeric(mynumber) = False Then
Exit Sub
Else
Target.Value = mynumber
End If
End If
End Sub
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan