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

Messagebox op meerdere voorwaarden

Status
Niet open voor verdere reacties.

Ivanhoes

Gebruiker
Lid geworden
6 jun 2015
Berichten
67
Hoi mensen,

Ik weet niet of het mogelijk is, maar dit is mijn vraag:

Ik wil graag, op basis van een voorwaarde, een messagebox tonen. De tekst in de box moet kunnen variëren, ook op basis van een voorwaarde.

Zie vooral het bijgevoegde bestand. Dit bestand is een onderdeel van een veel groter bestand en alles heeft normaal gesproken een vaste plaats.
Let daarom ook niet op de rare manier waarop nu alles staat.

Concreet vraag ik het volgende:

Als op tabblad 1: EN(A27=1;G33=1), toon dan een messagebox met de tekst van cel H33 (= in dit geval Wekelijkse rust)

- Dit wil ik voor elke regel laten gelden, zodra A.. en G.. 1 zijn.
- Dan wil ik ook nog dat de messagebox alleen een waarschuwing is. Er hoeft verder niets gedaan te worden dan op "OK" te klikken. Alle ingevulde waarden moeten gewoon blijven staan
- De messagebox hoeft slechts één keer getoond te worden. Als er geen wijzigingen in de betreffende regels zijn (in dit geval de cellen R27 en S27), hoeft de messagebox
niet meer getoond te worden of steeds opnieuw te voorschijn komen.

Ik heb al een gedeeltelijke macrocode in de sheet staan. Maar deze werkt niet goed. Omdat de waarde in cel A27 altijd op 1 blijft staan, wordt de messagebox steeds getoond.

Ik kom er niet uit en roep daarom jullie hulp in.

Alvast bedankt voor het meedenken,

Ivanhoes.
 

Bijlagen

Zie vooral het bijgevoegde bestand. Dit bestand is een onderdeel van een veel groter bestand en alles heeft normaal gesproken een vaste plaats.

Het bestand is door mij en anderen bekeken en op al deze zwevende onderdelen krijg je denk ik nooit een antwoord. Als alles normaal gesproken een vaste plaats heeft geeft ook al niet al te veel vertrouwen om aan een oplossing te werken. Misschien moet je eens zoeken op gegevensvalidatie. Dan heb je ook geen VBA nodig.
 
Laatst bewerkt:
Hoi VenA,

In ieder geval bedankt voor je antwoord!

Ik zie dat ik de vraag ook anders kan/moet stellen, met een aantal opmerkingen:

- Kolom R, rijen 26 t/m 62, worden ingevuld aan de hand van gegevensvalidatie.
- Kolom S wordt berekend aan de hand van kolom R en een aantal voorwaarden op een ander tabblad.
- Kolom A: elk regelnummer wordt apart berekend aan de hand van meerdere voorwaarden. Wordt aan één van deze voorwaarden
voldaan, dan is de uitkomst 1. Maw: als bijv. Cel R27 ingevuld wordt, wordt S27 automatisch ingevuld en als aan de voorwaarden wordt voldaan,
dan volgt in Cel A27 uitkomst 1. Deze berekeningen gelden dus voor elke regel apart.
- De kolommen G en H geven dan uiteindelijk weer aan welke voorwaarden (H) voldaan is en hoeveel keer (G)

Wat ik dus probeer in het kort:

- Als voldaan wordt aan de voorwaarde 1 in cel A27, dan moet een messagebox getoond worden.
- Vervolgens moet de messagebox de tekst tonen, waarbij in kolom G en H een 1 staat. Dit kan dus wisselen!
- Omdat het berekende cellen zijn, wil ik dat de messagebox slechts 1 keer getoond wordt. Na het "Ok"-klikken, hoeft de messagebox niet meer terug te komen.
Ik denk dat ik voor deze regel gebruik moet maken van Change in VBA, ipv Calculate.

Ik hoop dat het zo duidelijker is.

Alvast bedankt weer en nogmaals bedankt voor de reactie.

Ivanhoes.
 
Gedeeltelijke oplossing

Hoi mensen,

Ik heb niet stil gezeten. In het bijgevoegde bestand heb ik een VBA-code staan, welke weergeeft wat de bedoeling is.
Deze code is niet volledig geschreven. Slechts tot en met rij 31. Dit wordt later opgevoerd tot en met rij 62.

Wat doet de code (als voorbeeld):

- Als er een wijziging plaatsvindt in cel R27, en de waarde in cel A27 =1, toon een messagebox.
Na het klikken op "OK" komt de messagebox niet terug, want er vindt immers geen wijziging meer plaats in cel R26
- Als er een wijziging plaatsvindt in cel R28, en de waarde in cel A28 = 1, toon dan opnieuw een messagebox.
Na het klikken op "OK" komt de messagebox niet terug, want er vindt immers geen wijziging meer plaats in cel R26


Wat ik nu nog probeer te doen is de teksten in de messageboxen "dynamisch" te maken.
Ik probeer in de messageboxen de waarde weer te geven die staan in kolom H, op basis van kolom G.
De ene keer kan er in kolom G bij (bijvoorbeeld) dagelijkse rust 1 staan. Dan wil ik ook de tekst "Dagelijkse rust" in de box hebben staan.
De andere keer kan er in kolom G bij wekelijkse rust 1 staan. Dan wil ik ook "Wekelijkse rust" in de box hebben staan.

Kan iemand mij helpen om dit op die manier in de messageboxen te laten tonen?

Alvast bedankt en groetjes,

Ivanhoes.
 

Bijlagen

kan vast beter heb er niet zoveel verstand van :cool: maar heb dit

Code:
Dim i As Integer
    For i = 20 To 50
    If Cells(i, 7).Value = 1 Then
        MsgBox Cells(i, 8).Value, vbOKOnly
    End If
Next i

alleen ff de waardes van i aanpassen.
 
Je kan het zo eens proberen.

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("R26:R62")) Is Nothing And Target.Count = 1 Then
    Application.EnableEvents = False
    If Target.Offset(, -17).Value <> 0 Then MsgBox Range("G33:G42").Find(Target.Offset(, -17).Value).Offset(, 1)
    Application.EnableEvents = True
End If
End Sub
 
Hoi Mde en VenA,

Heel hartelijk bedankt voor de reacties!

Hier komt wel even de leek om de hoek kijken.... Ik ben niet zo bekend met VBA en daarom vraag ik of jullie de werking
van jullie code kunnen uitleggen?

En, helaas, door een slechte planning van mijn kant over dit vraagstuk kan ik niet eerder dan zondag 25/10 weer opnieuw reageren.

Wat ik nog kon testen was het volgende:

Mde:
Ik heb jouw code geplakt onder Worksheet_SelectionChange. Ik denk dat ik hier een fout mee maak, maar dat weet ik niet zeker.
Verder weet ik ook niet welke waarde ik voor i zou moeten gebruiken.

VenA:
Ik heb jouw code geplakt onder Worksheet_Change. De code lijkt op zich goed te werken. Ik krijg alleen altijd de tekst: `Arbeidstijd gem. per 4 weken`,
ongeacht of er nu wel of geen 1 voor deze tekst in rij G staat. Wat ik heel mooi vind is dat deze korte code zorgt dat er een messagebox verschijnt,
in welke rij ik ook iets invoer (en indien uiteraard op dezelfde rij in kolom A een 1 staat)


Ik hoop dat jullie mij de werking van jullie code kunnen uitleggen, zodat ik dit goed kan begrijpen en ook zelf op zoek kan gaan naar een oplossing.

Allen alvast weer bedankt en tot zondag 25-10!

Ivanhoes.
 
Zoals eerder eerder geschreven is het nogal een wazig bestand. Zeker als je nergens wat zinnigs invult. Zelfde code maar met bijlage en je zal zien dat het werkt.
 

Bijlagen

De code kijkt in kolom 7(g) vanaf cel 20 = i of hier een 1 staat tm rij 50
Zo ja dan komt msgbox terug met de waarde van kolom 8 (h)
 
Aangepast Bestand

Hoi mensen,

@VenA en Mde: Hartelijk dank nog voor de reacties!

Om eea duidelijker te maken mbt dit wazige bestand:
De gebruikers vullen een tijd (Van) in in kolom R26 t/m R62. De eindtijd (Tot) wordt automatisch berekend op een ander tabblad.
Alle kolommen vóór kolom M zijn voor de gebruikers verborgen, net als alle rijen 20 t/m 25.

Als er tijden ingevuld worden, dan volgen daaruit ook berekeningen op andere tabbladen mbt tot de Arbeidstijdenwet.
De uitkomsten daarvan volgen in Kolom A. 0=Geen ATW-overtreding. 1=Wel een ATW-overtreding.

Omdat dit slechts een voorbeeldbestand is ten behoeve van mijn vraag, heb ik alle berekeningen weggelaten. Kolom A en Kolom H
moeten dus nu met de hand ingevuld worden. Ik heb mijn voorbeeld nu enigszins aangepast, waardoor de vraag ook iets anders wordt:

Als in R27 een tijd ingevuld wordt, volgt een uitkomst in A27 èn H27 (nu dus met de hand ingevuld)
- Ik wil dus voor elke regel apart een messagebox tonen als de tijd gewijzigd wordt in R27 èn op het moment dat A27 = 1.
- De tekst die getoond moet worden in de box is de tekst die vermeld staat in H27.

Uiteraard wil ik óók een box tonen, op het moment dat dit gebeurt in een andere rij en de tijd in die rij gewijzigd wordt. De tekst die
dan getoond moet worden is de tekst die in die rij onder kolom H vermeld staat.

Ik heb weer een voorbeeldbestand bijgevoegd, waarin 3 overtredingen staan. Ik hoop dat het veel duidelijker is zo.

Alvast bedankt voor de medewerking!

Groetjes,

Ivanhoes.
 

Bijlagen

Gedeeltelijke oplossing

Hoi mensen,

Ik ben in de tussentijd bezig geweest.

@VenA: Ik kan jouw bijlage niet zien en daarom dus ook de uitleg niet zien. Hij werkt overigens wel.
@Mde: Ik begrijp de code en snap nu ook wat hij doet.
Beiden nog bedankt voor jullie reacties.

Ik heb verder (nog) geen reactie gekregen op mijn laatste aangepaste vraag. Ik ben inmiddels tot de
conclusie gekomen dat ik de berekeningen in de tabbladen moet aanpassen. Dat heb ik gedaan en
hierop heb ik de code ook aangepast.

Zie bijgevoegd bestand.

De code doet niets anders dan kijken óf er in een rij in kolom A een waarde 1 staat.
Staat die in die ene rij, dan worden in een messagebox de waarden getoond van dezelfde rij,
maar dan die waarden die in de kolommen C, D, E en F staan. Bovendien wordt elke waarde
in C, D, E en F onder elkaar geplaatst.

Ik begrijp dat de code voor alle rijen t/m 62 teveel is om hier te tonen. Daarom heb ik in de
code alleen de rijen 26, 27 en 28 verwerkt.
Ik begrijp ook dat de code nu nogal lang wordt. Ik ga een nieuw topic openen. Misschien dat
iemand mij dan kan helpen de code te verkleinen of te vereenvoudigen.

Allen nogmaals bedankt.

Ivanhoes.
 

Bijlagen

Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan