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

VBA hulp getal of geen getal?

Status
Niet open voor verdere reacties.

brandernl

Gebruiker
Lid geworden
19 okt 2004
Berichten
445
Ik heb een rooster programma dat met behulp van voorwaardelijke opmaak laat zien of het juiste aantal diensten is gepland. Bij teveel ingeroosterde diensten wordt de cel op de 1e of 2e rij rood.
Maar dit is niet genoeg "idiotensicher" oftewel "nurseproof".
Ik heb daarom een macro geschreven die moet controleren of een bepaalde waarde wordt overschreden en dan een messagebox geeft met een waarschuwing.
Maar hij doet het niet. Het lijkt erop dat hij de uitkomst van een formule niet als een getal ziet.
Gaarne uw deskundige hulp

Hier de code en het bestand
Private Sub Worksheet_Calculate()
Dim Kol As Integer
Dim Rng As Range
Dim rCell As Range

Kol = ActiveCell.Column

Set Rng = Range(Cells(Kol, 3), Cells(Kol, 5))
For Each rCell In Rng
If rCell.Value > 2 Then
MsgBox "Je hebt een dienst teveel gepland", _
vbExclamation + vbOKOnly, "Foutje?"
End If
Next
End Sub
 

Bijlagen

Bernard,

Verplaats de code achter ThisWorkbook naar Blad1.

Nog een kleine wijziging in de code.

Private Sub Worksheet_Calculate()
Dim Kol As Integer
Dim Rng As Range
Dim rCell As Range

Kol = ActiveCell.Column

Set Rng = Range(Cells(3, Kol), Cells(5, Kol)) 'even omgedraaid
For Each rCell In Rng
If rCell.Value > 2 Then
MsgBox "Je hebt een dienst teveel gepland", _
vbExclamation + vbOKOnly, "Foutje?"
End If
Next
End Sub
 
Wat stom van me:

Rij en kolom verwisseld! Maar je kan je er op blind staren.......
Dank Luc
 
Bij nadre inzien, nod een aanvulling.

Private Sub Worksheet_Calculate()
Dim Kol As Long
Dim Rng As Range
Dim rCell As Range

Kol = ActiveCell.Column
'voorkomt macroreactie in kolom A t/m E
If Kol < 5 Or Kol > 36 Then Exit Sub
Set Rng = Range(Cells(3, Kol), Cells(5, Kol))
For Each rCell In Rng
If rCell.Value > 2 Then
MsgBox "Je hebt een dienst teveel gepland", _
vbExclamation + vbOKOnly, "Foutje?"
End If
Next
End Sub
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan