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

Macro uitvoeren wanneer cel een negatieve uren heeft

Status
Niet open voor verdere reacties.

pouletten

Gebruiker
Lid geworden
13 apr 2010
Berichten
70
Hoi allemaal,

Graag zou ik een macro willen uitvoeren wanneer een cel negatieve uren bevat.
Het gaat om een cel die een formule bevat die het aantal ingeroosterde uren vergelijkt met het minimum aantal uren dat ingeroosterd moet worden.
Als er bijvoorbeeld te veel vrij hebben gevraagd dan komen het aantal uren in de min te staan (bijv -7:30). Als dit gebeurd, wil ik een msgbox die zegt: uren in de min!
Hoe kan ik dat doen?

mt vr gr

Pouletten
 
Code:
Private Sub Worksheet_Calculate()
If Range("A1").Value < 0 Then MsgBox "uren in de min!", vbExclamation, "Uren in min."
End Sub

Ga via ALT-F11 in VBE.
Dubbelklik op de betreffende werkblad (links) en plaats daar de code.

Met vriendelijke groet,


Roncancio
 
Beste,

Ik zie dat het werkt, als ik de macro handmatig draai. Dank daarvoor. Maar hoe krijg ik de macro draaiende als je een waarde in de berekening veranderd?

dank u

Pouletten
 
De macro wordt gestart als er een berekening op het werkblad wordt uitgevoerd.
Ik neem aan dat berekeningswijze op automatisch staat.

Met vriendelijke groet,


Roncancio
 
Beste Roncancio,

Ik heb de range aangepast in de Macro, zodat het overeenkomt met mijn sheet:

Code:
Private Sub Worksheet_Calculate()
If Worksheets("planning").range("l50").Value < 0 Then MsgBox "uren in de min!", vbExclamation, "Uren in min."
End Sub

Op het moment dat ik het aanpas en het aantal uren worden negatief, krijg ik geen melding. Ik krijg wel een melding wanneer ik de macro handmatig uit laat voeren.
 
Laatst bewerkt door een moderator:
De code mag NIET in een module staan maar achter het werkblad waar die berekening in plaats vindt.
 
- Ga naar de VBE via ALT-11
- Vervolgens doe je CTRL-R
Je ziet links een lijst van je werkbladen en ThisWorkbook.
Dubbelklik op ThisWorkbook en plaats daar de code.

Met vriendelijke groet,


Roncancio
 
Het lukt mij nog steeds niet om dit uit te voeren. Ik heb het naast mij neergelegd en vind het prima zo. Daarom kunnen jullie deze vraag als opgelost beschouwen.
 
Ik reageer toch want ik zie dat ik een fout heb gemaakt.
De code moet niet bij ThisWorkbook maar achter de naam van het werkblad.

Met vriendelijke groet,


Roncancio
 
Het werkt! Super bedankt. Nu heb ik alleen nog een vraag:
Ik wil het nu voor de hele rij L doen. Ik heb deze range een naam gegeven. Hoe kan ik dit dan in de macro neezetten?
Alvast bedankt.
 
L-kolom:
Code:
Private Sub Worksheet_Calculate()
If WorksheetFunction.Min(Range("L:L")) < 0 Then MsgBox "uren in de min!", vbExclamation, "Uren in min."
End Sub

Met benoemd bereik:
Code:
Private Sub Worksheet_Calculate()
If WorksheetFunction.Min(Range("naam")) < 0 Then MsgBox "uren in de min!", vbExclamation, "Uren in min."
End Sub

Met vriendelijke groet,


Roncancio
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan