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

tijdelijk formule overschrijven

Status
Niet open voor verdere reacties.

LdG13

Gebruiker
Lid geworden
28 feb 2016
Berichten
20
Ik heb een vraag over het 'tijdelijk een formule overschrijven'.
Ik heb een formule uit een eerder bericht gehaald (zie bijlage, in rood mijn aangepaste versie!Bekijk bijlage werktijd form.xlsBekijk bijlage werktijd form.xls), echter werkt bij niet helemaal.

ik heb een formule die de standaard pauzetijd aangeeft als de werktijd kleiner of groter is als 7:00 uur.
kleiner als 07:01 dan 30 minuten, anders 0:45 minuten.

Deze waarde wil ik echter overschrijven als de medewerker aangeeft dat hij bijv. maar 0:15 minuten pauze heeft gehad of juist een uur heeft gerust.

De formule in de bijlage geeft een foutmelding, die ik niet krijg verholpen...misschien iemand van jullie?
 
Volgens mij bedoel je het zo:

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Range("D6").Value = "" Then [d6].FormulaLocal = "=ALS(E6-c6<O2;O1;P1)"
End Sub

Als er niets is ingevuld in D6 wordt de formule in de cel geplaatst.

Met vriendelijke groet,


Roncancio
 
Je kan dan toch gewoon die 0:15 of 01:00 invullen, je hebt die formule dan toch niet meer nodig.
 
Hoi Roncancio,

...top, werkt...

Nu een stapje verder, had ik eigenlijk meteen moeten aangeven... :-(

Gaat dit ook lukken als de invullijst 15 regels (of meer) bevat?
Ik kreeg het in de formule niet aangepast...maar ik ben ook een leek op dit gebied.

Alvast bedankt als het mocht lukken.
 
Bijvoorbeeld:

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count = 1 Then
    If Not Intersect(Target, Range("D6:D20")) Is Nothing And Target.Value = "" Then Target.FormulaR1C1 = "=IF(RC5-RC3<R2C15,R1C15,r1c16)"
End If
End Sub

Met vriendelijke groet,


Roncancio
 
...en ook deze werkt.. perfect.

Kun je mij ook uitleggen wat het laatste gedeelte van deze regel betekent? Dat begrijp ik misschien een beetje hoe e.e.a. werkt ?!!
"" Then Target.FormulaR1C1 = "=IF(RC5-RC3<R2C15,R1C15,r1c16)"
De 'RC....' enz. zijn toch gen verwijzingen naar cellen?

opnieuw bedankt.
 
Toch wel:p

Het zijn relatieve verwijzingen (vanaf de gewijzigde cel).
R staat voor rij
C staat voor kolom

De code wordt gerund als er een wijziging plaatsvindt in kolom D,
RC5 = Kolom E (5e kolom) van de gewijzigde rij.
R2C15 = Cel O2 (rij 2, 15e kolom)

Met vriendelijke groet,


Roncancio
 
Ok bedankt, toch weer iets slimmer geworden!
Ik ga het toepassen in het eigenlijke bestandje. Mocht ik nog vragen hebben, meld ik me weer.
nogmaals bedankt.
 
...toch nog opnieuw een vraag...
Aangezien het werkt zoals bedoeld, wil ik het op meerdere tabbladen in het bestand gebruiken.
..maar dan zal de formule wel volledig aangepast moeten worden?

dus kortom, kun je me wederom verder helpen

alvast bedankt voor de moeite .
 
sorry, mijn vorig vraag is natuurlijk gewoon de vba per tabblad kopiëren.

Als ik nu het werktijdenblad voor zondag t/m zaterdag op 1 tabblad wil gebruiken, m.a.w. dus 7 reeksen met elk de aanvangstijd, pauze en eindtijd.

Wat wordt dan de formule? Iemand die me kan helpen?
 
Je kunt de code bij ThisWorkbook plaatsen in
Code:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
' je code
End Sub

..dan geldt het voor alle werkbladen in het bestand.

Je vraag is mij niet duidelijk.
Wil je steeds naar 1 bepaald werkblad refereren?

Met vriendelijke groet,


Roncancio
 
Hallo,

ja excuses, het was handiger geweest als ik mijn vraag meteen de eerste keer volledig had gemotiveerd!!! , maar ik zal opnieuw een bestandje toevoegen.

Ik bedoel eigenlijk op 1 tabblad van maandag t/m zondag, dus 7 kolommen met Aanvang, pauze eind en totaaltijd.
En dit op 5 tabbladen, voor verschillende groepen personen ( groep 1 t/m 5).

hartelijk dank
 

Bijlagen

  • FormulierTijdregistratie.xlsx
    38,8 KB · Weergaven: 33
Het bestand is een .xlsx dus heb je zelf blijkbaar weinig inspanningen verricht om tot een oplossing te komen.

Probeer het zo maar eens.

Code:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
  If Target.Count <> 1 Or Target.Row < 6 Or (Target.Column + 1) Mod 4 <> 0 Then Exit Sub
  Application.EnableEvents = False
   If Target.Value = "" Then Target.FormulaR1C1 = "=IF(RC[1]-RC[-1]<R2C14,R1C14,R1C15)"
  Application.EnableEvents = True
End Sub
 
Ik had wel geëxperimenteerd in het vorige bestandje, maar omdat mijn vraag niet duidelijk was, heb ik het bestandje genomen dat ik daadwerkelijk wil gaan gebruiken.
Verder ben ik een leek op vba gebied en formules, dus moet ik het door het proberen "te lezen" van vba codes en formules te begrijpen wat er gebeurt..


Ik heb deze geprobeerd, maar doet helaas niets.
 
En waar heb je de code neergezet toch wel in de module van ThisWorkbook?
 
hhmmm, nu wel....en ja hoor het werkt.

Heel knap en hartelijk bedankt voor de oplossing.

en weer een stukje bij geleerd!:eek:
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan