Crokydriver
Gebruiker
- Lid geworden
- 7 okt 2017
- Berichten
- 6
Beste
Ik ben geen grote Excel VBA gebruiker, maar heel soms haal ik wel eens iets in mijn hoofd die ik probeer zo praktisch mogelijk te maken voor mezelf.
Ditmaal was ik het beu dat ik mijn overuren op het werk bijna nooit weet en als ik die opvraag het weken duurt voor antwoord dus besloot ik een Excel te maken om die zelf bij te houden en liefst gebruiksvriendelijk.
Na drie dagen programmeren en af en toe eens fora af te schuimen naar een klein probleempje of functie ben ik bijna klaar op 1 detail na die ergens simpel lijkt maar er niet in geraakt.
Hieronder staat een kort stukje van de code waar het probleem hem situeert, waar ik jullie wat info over zal geven om de situatie te begrijpen:
Variabele O staat voor het aantal overuren een bepaalde dag en wordt berekent door (Einduur - Beginuur - Pauze) - Normale Werkuren (in decimalen), waarna iets later een aantal cellen (zie afbeelding) worden ingevuld met die formule in een kalendervorm wat allemaal perfect werkt.
Mijn probleem doet hem voor wanneer ik mijn VBA wil omvormen naar een algemener geheel zodat ook iemand anders door simpel wat cellen een waarde te geven als Beginuur, Pauze en Normale Werkuren deze sheet kan gebruiken. Daarvoor wil ik een Variabel gebruiken voor de werkuren (W) en vanaf dan werkt het niet meer, echter als ik cel O37 een geheel getal geef als waarde of in VBA W=1 bv dan werkt het WEL, vanaf ik een tijd invul die Excel als decimaal ziet werkt het niet meer wat het voorheen wel deed met decimalen. Ook mijn andere cellen staan in tijd en allemaal dezelfde :mm vorm. Vindt iemand het probleem? Het is het laatste zetje voor een afgewerkte sheet
mvg
Björn
PS:
De If functie heeft voor het probleem geen belang, dit betreft een cel gekoppeld aan een selectievak of dit een normale werkdag is of een extra werkdag (wel of niet volledig in overuren), daarom worden bij de GO formule geen werkuren afgetrokken omdat die dag geen werkdag is en dus Grote Overuren zijn (beetje logisch naam houden ;-) ), overigens wordt die formule ook correct geplaatst en is het enige verschil de variabele W
DIT WERKT:
DIT WERKT NIET:
Ik ben geen grote Excel VBA gebruiker, maar heel soms haal ik wel eens iets in mijn hoofd die ik probeer zo praktisch mogelijk te maken voor mezelf.
Ditmaal was ik het beu dat ik mijn overuren op het werk bijna nooit weet en als ik die opvraag het weken duurt voor antwoord dus besloot ik een Excel te maken om die zelf bij te houden en liefst gebruiksvriendelijk.
Na drie dagen programmeren en af en toe eens fora af te schuimen naar een klein probleempje of functie ben ik bijna klaar op 1 detail na die ergens simpel lijkt maar er niet in geraakt.
Hieronder staat een kort stukje van de code waar het probleem hem situeert, waar ik jullie wat info over zal geven om de situatie te begrijpen:
Variabele O staat voor het aantal overuren een bepaalde dag en wordt berekent door (Einduur - Beginuur - Pauze) - Normale Werkuren (in decimalen), waarna iets later een aantal cellen (zie afbeelding) worden ingevuld met die formule in een kalendervorm wat allemaal perfect werkt.
Mijn probleem doet hem voor wanneer ik mijn VBA wil omvormen naar een algemener geheel zodat ook iemand anders door simpel wat cellen een waarde te geven als Beginuur, Pauze en Normale Werkuren deze sheet kan gebruiken. Daarvoor wil ik een Variabel gebruiken voor de werkuren (W) en vanaf dan werkt het niet meer, echter als ik cel O37 een geheel getal geef als waarde of in VBA W=1 bv dan werkt het WEL, vanaf ik een tijd invul die Excel als decimaal ziet werkt het niet meer wat het voorheen wel deed met decimalen. Ook mijn andere cellen staan in tijd en allemaal dezelfde :mm vorm. Vindt iemand het probleem? Het is het laatste zetje voor een afgewerkte sheet
mvg
Björn
PS:
De If functie heeft voor het probleem geen belang, dit betreft een cel gekoppeld aan een selectievak of dit een normale werkdag is of een extra werkdag (wel of niet volledig in overuren), daarom worden bij de GO formule geen werkuren afgetrokken omdat die dag geen werkdag is en dus Grote Overuren zijn (beetje logisch naam houden ;-) ), overigens wordt die formule ook correct geplaatst en is het enige verschil de variabele W
DIT WERKT:
Code:
Dim O As String
Dim W As Double
Dim GO As String
O = "=IF(OR(R[-3]C="""",R[-2]C=""""),""0"",(R[-2]C-R[-3]C-R[-1]C)-0.308333333333333)"
GO = "=IF(OR(R[-3]C="""",R[-2]C=""""),""0"",(R[-2]C-R[-3]C-R[-1]C))"
If [A39] = "Waar" Then
[B7] = O
[B11] = O
[B15] = O
[B19] = O
[B23] = O
[B27] = O
Else
[B7] = GO
[B11] = GO
[B15] = GO
[B19] = GO
[B23] = GO
[B27] = GO
End If
DIT WERKT NIET:
Code:
Dim O As String
Dim W As Double
Dim GO As String
'W = Range("O37").Value
'O = "=IF(OR(R[-3]C="""",R[-2]C=""""),""0"",(R[-2]C-R[-3]C-R[-1]C)-" & W
If [A39] = "Waar" Then
[B7] = O
[B11] = O
[B15] = O
[B19] = O
[B23] = O
[B27] = O
Else
[B7] = GO
[B11] = GO
[B15] = GO
[B19] = GO
[B23] = GO
[B27] = GO
End If
Laatst bewerkt: