• 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 cel waarde nul

Status
Niet open voor verdere reacties.

samabert

Gebruiker
Lid geworden
27 mrt 2010
Berichten
308
Hallo,

In Teller_Test zoek ik naar een code die een message box weergeeft wanneer de cel waarde in:

Range (J23:J37) op nul terechtkomt, MsgBox (Verlofdagen zijn opgebruikt),
Range(U23:U37) op nul terechtkomt, MsgBox (Anciënniteitsdagen zijn opgebruikt),
Range(AF23:AF37) op nul terechtkomt, MsgBox (Andere dagen zijn opgebruikt),

Het stukje code dat ik gevonden heb werkt gedeeltelijk voor verlofdagen, maar als één cel (vb. J25) waarde nul heeft krijg je telkens bij elke andere invoer op een andere rij in Range (B4:AF18) de message box terug te zien.

Hoe dit aan te passen en verder uit te breiden/combineren voor de message box van anciënniteitsdagen en andere dagen.
Als dit enigszins mogelijk is?

Ik ben al enkel dagen aan het zoeken, maar heb niets gevonden dat werkt.

Alvast bedankt.
Marc
 

Bijlagen

Waarom definieer je 3 ranges, waarvan 2 als variant en één als range? En een variabele de (gereserveerde naam) Value geven is ook niet handig. Ik kijk nog even naar je probleem, maar dat zou ik dus in ieder geval aanpassen.
En dit:
Code:
    Set Rng2 = Range("J26")
    Set Rng2 = Range("J27")
Is waarschijnlijk ook niet wat je bedoelt. Ik denk dan eerder dit:
Code:
    Set Rng2 = Range("J26")
    Set Rng3 = Range("J27")
 
En dan krijg je dus zoiets:
Code:
Private Sub Worksheet_Calculate()

Dim Rng1 As Range, Rng2 As Range, Rng3 As Range
Dim dblValue As Double
Dim Title As String

    'Put the range you want to look at here
    Set Rng1 = Range("J25")  'Wettelijk verlof
    Set Rng2 = Range("J26")
    Set Rng3 = Range("J27")
    
    'Put the target value here
    dblValue = 0
    'Put the message (prompt) of the message box (pop up) here
    Title = "Wettelijke verlofdagen"
    If Rng1.Value = dblValue Then
        MsgBox "Wettelijke verlofdagen zijn opgebruikt", vbInformation, Title
    End If
    If Rng2.Value = dblValue Then
        MsgBox "Anciënniteitsverlof opgebruikt", vbInformation, Title
    End If
    If Rng3.Value = dblValue Then
        MsgBox "Andere dagen zijn opgebruikt", vbInformation, Title
    End If

End Sub
 
Ik denk dat het de bedoeling is voor alle namen in kolom A en niet alleen die 3 cellen
 
@ emields
@OctaFisch

Bedankt voor de oplossingen :thumb:
Ik ga ze morgenavond pas kunnen testen wegens zeer vroeg op morgen, hou jullie op de hoogte.
 
@ JVeer

Inderdaad, het is voor alle namen. Het voorbeeld is een deeltje van het volledig werkblad.
Als het al werkt voor 3 namen zal het wel uitgebreid kunnen worden naar de rest.
Bedankt voor het meedenken aan een oplossing.
 
Dat is makkelijker gezegd dan gedaan;)
 
Hier een oplossing met behulp van een extra bereik. Dat bereik zou je kunnen verbergen (rij 50 tm 68)
Plaats deze achter je werkblad 1

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
  If Not Intersect(Target, Range("B4:AG18")) Is Nothing And Target.Count = 1 Then
    With Application
      .EnableEvents = False
       Sheets(1).Range("A50:AG68").Value = Sheets(1).Range("A20:AG38").Value
      .Calculation = True
    
        Range("J23:J37").Name = "A"
        Range("U23:U37").Name = "B"
        Range("AF23:AF37").Name = "D"
    
        Range("J53:J67").Name = "AAA"
        Range("U53:U67").Name = "BBB"
        Range("AF53:AF67").Name = "DDD"
     
        For i = 1 To WorksheetFunction.CountA([A])
            If .Index([A], i) <> .Index([AAA], i) And .Index([A], i) = 0 Then MsgBox ("Verlof van " & Cells(i + 22, 1) & " is opgebruikt")
            If .Index([B], i) <> .Index([BBB], i) And .Index([B], i) = 0 Then MsgBox ("Anciënniteitsverlof van " & Cells(i + 22, 1) & " is opgebruikt")
            If .Index([D], i) <> .Index([DDD], i) And .Index([D], i) = 0 Then MsgBox ("Andere dagen van " & Cells(i + 22, 1) & " zijn opgebruikt")
         Next
      .Calculation = False
      .EnableEvents = True
    End With
  End If
End Sub
 

Bijlagen

Laatst bewerkt:
@ emields,

Ik heb jouw oplossing getest, dit is wat ik voor ogen had. Met als extra de naam in de messagebox.

Ik heb wel een vraagje:
In Rest Verlof en Anciënniteit gebruik je volgende formule.

PHP:
     =ALS(A3<>"";AI3-AH3;"")  
=ALS(A3<>"";AL3-AK3;"")


In Rest Andere dagen J gebruik je een nul in de formule.

PHP:
=ALS(A3<>0;AO3-AN3;"")

Kan je mij uitleggen waarom het verschil?

In ieder geval knap gedaan, enorm bedankt. :thumb:

M.v.g.
Marc
 
veel verschil maakt het niet uit als je tekst gebruikt.

als(a3<>""; betekend als a3 niet leeg is als(a3="" betekend leeg is
als (a3<>0 betekend als a3 niet leeg is en de waarde niet 0 is als(a3 =0 wil zeggen als a3 gelijk is aan 0
 
Ik ben mee, bedankt. :D

OctaFish en JVeer, jullie ook bedankt voor de bijdrage. Ik heb uiteindelijk besloten de oplossing van emields te gebruiken.

M.v.g.

Marc
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan