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

waarschuwing voor verkeerde tijden

Status
Niet open voor verdere reacties.

fdenboes

Gebruiker
Lid geworden
12 mrt 2008
Berichten
35
Hallo ,

ik heb een waarschuwing gemaakt met hieronder de voorwaardes m.b.v. een kleur
dus E6 is een tijd in kolom"van" en G6 is een tijd van kolom "tot"
om daarvan de berekening te kunnen gebruiken moeten de tijden van "tot" en "van"
juist genoteerd worden, de beidde tijden worden in een vaste lijst gebruikt
namelijkt met de optie validatie. dat werk allemaal perfect maar zoals je hieronder ziet
zijn dit de voorwaardes van 1 tijds berekening, heb dus namelijk 6 tijds berekeningen op een dag x 25 dagen zijn dus 150x dezelfde voorwaardes met verschillende cellen .
Kan iemand s.v.p een tip geven om dit binnen 1 uur alle 150 voorwaardes (of andere mogelijkheid!)in een macro weg te werken nu is het namelijk heel veel typ werk:mad:!

ik hoop dat jullie me hierbij kan helpen

MvrGr

Ferry:(


Private Sub Worksheet_Change(ByVal Target As Range)
If Range("E6") > Range("G6") And Range("G6") = 0 Then
Cells(6, 7).Interior.ColorIndex = 18
Cells(6, 5).Interior.ColorIndex = 0
End If

If Range("E6") < Range("G6") And Range("E6") = 0 Then
Cells(6, 7).Interior.ColorIndex = 0
Cells(6, 5).Interior.ColorIndex = 18
End If

If Range("E6") = Range("G6") And Range("G6") > 0 And Range("E6") > 0 Then
Cells(6, 7).Interior.ColorIndex = 18
Cells(6, 5).Interior.ColorIndex = 18
End If

If Range("E6") > Range("G6") And Range("E6") > Cells(17, 22) And Range("G6") > Cells(17, 23) Then
Cells(6, 7).Interior.ColorIndex = 18
Cells(6, 5).Interior.ColorIndex = 18

End If

If Range("E6") = Range("G6") And Range("G6") = Cells(17, 22) Then
Cells(6, 7).Interior.ColorIndex = 18
Cells(6, 5).Interior.ColorIndex = 0

End If
end sub
 
Target, dat je ziet staan in de eerste regel code, is een verwijzing naar de cel(len) die gewijzigd werd(en) waardoor het Change event in gang gezet werd.

Wigi
 
wat wil je daarmee zeggen ? dat ik een verkeerde boven regel gebruik zodoende dat dit 150 keer moet doen voor de ander cellen ,please meer uitleg graag ! :(
 
Gebruik deze code eens:

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
     MsgBox Target.Address
end sub

en verander vervolgens wat cellen.

Ik ben niet helemaal zeker, maar ik denk dat dit kan helpen om de code te beperken tot 1 ipv. 150.

Wigi
 
kriig nu bij elke verandering van een cel een message en dat wil ik juist niet , de enige message die ik wil zien is als iet verkeert genoteert staat is dat de desbetrefende cel van kleur veranderd
 
OF DOE IK IETS VERKEERT?

Private Sub Worksheet_Change(ByVal Target As Range)
'******************************************************************************************
MsgBox Target.Address
If Range("E6") < Range("G6") Or Range("G6") = 0 And Range("E6") = 0 Then
Cells(6, 7).Interior.ColorIndex = 0
Cells(6, 5).Interior.ColorIndex = 0
End If


'******************************************************************************************
If Range("E6") < Range("G6") And Range("E6") = 0 Then
Cells(6, 7).Interior.ColorIndex = 0
Cells(6, 5).Interior.ColorIndex = 18
End If
'******************************************************************************************
If Range("E6") = Range("G6") And Range("G6") > 0 And Range("E6") > 0 Then
Cells(6, 7).Interior.ColorIndex = 18
End If
'******************************************************************************************
If Range("E6") > Range("G6") And Range("E6") > Cells(17, 22) And Range("G6") > Cells(17, 23) Then
Cells(6, 7).Interior.ColorIndex = 18
Cells(6, 5).Interior.ColorIndex = 18
End If
'******************************************************************************************
If Range("E6") = Range("G6") And Range("G6") = Cells(17, 22) Then
Cells(6, 7).Interior.ColorIndex = 18
Cells(6, 5).Interior.ColorIndex = 0
End If
'******************************************************************************************
If Range("E6") < Range("G6") And Range("E6") = Cells(17, 23) And Range("G6") = Cells(17, 22) Then
Cells(6, 7).Interior.ColorIndex = 18
Cells(6, 5).Interior.ColorIndex = 18
End If
'******************************************************************************************
If Range("E6") > Range("G6") And Range("G6") = Cells(17, 22) Then
Cells(6, 7).Interior.ColorIndex = 18
Cells(6, 5).Interior.ColorIndex = 0
End If
End Sub
 
Hoi

Die Msgbox was enkel een manier om jou duidelijk te maken dat je met Target de cel krijgt die gewijzigd werd. Wat jij moet doen is testen of je in een bepaalde kolom iets gewijzigd hebt, bvb.

Code:
If Target.Column = 5 Then
'code
Else
'andere code
End If

Je moet bvb. testen of je in kolom E of G iets gewijzigd hebt:

Code:
If Target.Column = 5 Or Target.Column = 7 Then
'code (*)
Else
'andere code
End If

Test ook of je op een juiste rij zit.

Bij (*) (zie code) komen dan de tests die je wil uitvoeren. Je gebruikt Target en niet vaste cellen zoals Range("E6") enz.

Tenzij je dit 150 keer wil doen ;)

Wigi

PS: als je dt-fouten blijft schrijven in jouw posts, stop ik met antwoorden. 3 dt-fouten in 1 regel tekst is net iets te veel.
 
Hallo Wigi,

Heb net jouw code getest, maar he waar kan ik me voorwaardes(die bij de oude code heb gebruikt, zie blauw)
kwijt, want als ik dit zo invoer"If Target.Column = 5 > Target.Column = 7"
word er niet naar de voorwaardes gekeken en alle cellen(E6 en G6) die ik selecteer krijgen dan kleur !


Private Sub Worksheet_Change(ByVal Target As Range)
'******************************************************************************************
'******************************************************************************************
'If Range("A6") < Range("C6") Or Range("C6") = 0 And Range("A6") = 0 Then
'Cells(6, 3).Interior.ColorIndex = 0
'Cells(6, 1).Interior.ColorIndex = 0
'End If
If Target.Column = 5 Or Target.Column = 7 Then
Cells(6, 3).Interior.ColorIndex = 0
Cells(6, 1).Interior.ColorIndex = 0
Else
'andere code

End If

End Sub
 
Laatst bewerkt:
Welke cellen moeten er nu juist gecheckt worden als er iets wijzigt?

De bedoeling van de IF's in de code en het werken met Target, is dat je eerst uitvraagt in welke kolom iets gewijzigd werd en in welke rij.

Dit doe je met

Code:
Target.Column

en

Code:
Target.Row

Bvb. Target.Column moet 5 zijn of 7 (dus E of G)

De rij moet bvb. 6 zijn of groter, en bvb 20 of kleiner:

Code:
If Target.Row >= 6 And Target.Row <= 20 Then
'code
Else
'andere code
End If

Als de gewijzigde cel (Target) dus valt in een goed bereik, dan ga je verder met kleuren op basis van enkele bijkomende vragen.

De code die je dan hebt, werkt verder met Target. Dus bvb NIET

Code:
Cells(6, 3).Interior.ColorIndex = 0

Maar

Code:
Cells(Target.Row, 3).Interior.ColorIndex = 0

Wigi
 
Ok , ik heb een kolom E(van) en kolom G(tot) met 6 rijen voor een dag.
Je vult in E6 en G6 je uren in, de uren notatie heb ik voor beidde kolommen in een lijst(drop down menu) weggewerkt via menu data validatie, namelijk
7:00, 7:15, 7:30, 8:00 …….Etc. tot 19:00
Nou is het zo als ik een berekening wil maken dan is 1 van de 8 voorwaardes , “van”E6 nooit groter mag zijn dan “tot”G6 als dat wel zo is dan moet de beidde cellen een kleur aangeven dat wil zeggen, verander E6 of G6 of beidde. anders klopt me berekening niet
met de uren en geld bedragen

Totaal heb ik 25 dagen (van maandag tot vrijdag) dus 150 kolommen waarvan 75 “van kolommen en 75 tot kolommen



Dag1 van tot
E6 - G6
E7 - G7
E8 - G8
E9 - G9
E10 - G10
E11 - G11
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan