Toon posts:

[VBA] Excel VBA klapt eruit

Pagina: 1
Acties:
  • 116 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Ik heb in Excel een macro gemaakt met VBA waarbij aan een bepaalde tijd een bepaalde percentage (100%, 135% of 200%) wordt toegewezen. (soort urenstaat).
Nu loopt die macro alle regels af waarbij in de eerste kolom een datum staat.
So far so good.
Nu moet de macro per dag bekijken welk (week)dag het is en vervolgens aan begin en eindtijd bepalen hoeveel uur er 100% is, en zo ook voor 135% en 200%.
Nu heb ik het voor de ma, di, wo en do voor elkaar dat dat goed gaat, echter, na een aantal keer de run doorlopen te hebben klapt hij eruit met de error melding "Runtime error 1004 - Application-defined or object defined error"
Hij doet dit bi jde 95e keer dat de run doorlopen wordt.

Enig idee waar dit aan kan liggen ???? :? :? :? :?

Verwijderd

misschien kan je eens een deel van je code posten om te zien waar het fout gaat. en op welke regel

  • j_du_pee
  • Registratie: Maart 2000
  • Laatst online: 23-09-2024

j_du_pee

du pain, du vin, du pee

misschien staat er een preciezere error in de event log ?

kaart != map && bottel != fles
Wacht op antwoord


Verwijderd

Topicstarter
Verwijderd schreef op 28 augustus 2003 @ 11:59:
misschien kan je eens een deel van je code posten om te zien waar het fout gaat. en op welke regel
Bij deze:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
Sheets(1).Select
Range("A3").Select
Selection.End(xlDown).Select
NR_of_Rows = ActiveCell.Rows.Row
ZevenUur = #7:00:00 PM#
ZesUur = #6:00:00 AM#
MidderNachtVroeg = #12:00:00 AM#
MidderNachtLaat = #11:59:59 PM# + #12:00:01 AM#
WelGeenPauze = #6:00:00 AM#
Pauze = #12:30:00 AM#
WelGeenOverwerk = #6:30:00 PM#
TienUur = #10:00:00 PM#
For Row = 3 To NR_of_Rows
   Range("A" & Row).Select
   Range("D" & Row, "K" & Row).Formula = ""
Next
For Row = 3 To NR_of_Rows
    Sheets(1).Select
    Range("A" & Row).Select
    EindTijd = Range("C" & Row).Value
    BeginTijd = Range("B" & Row).Value
    WeekDag = Range("A" & Row).Value
    Uren100 = 0
    Uren135 = 0
    Uren200 = 0
    DagVanDeWeek = Weekday(WeekDag, vbMonday)
    
    Range("E" & Row).Formula = Row
    If DagVanDeWeek = 1 Then
        If BeginTijd < ZesUur Then
            If EindTijd >= ZevenUur Then
                If (EindTijd - BeginTijd) > ZesUur Then
                    Uren135 = (EindTijd - ZevenUur) + (ZesUur - BeginTijd)
                    Uren100 = (ZevenUur - (ZesUur + Pauze))
                Else
                    Uren135 = (EindTijd - ZevenUur) + (ZesUur - BeginTijd)
                    Uren100 = (ZevenUur - ZesUur)
                End If
            Else
                If (EindTijd - BeginTijd) > ZesUur Then
                    Uren135 = (ZesUur - BeginTijd)
                    Uren100 = (EindTijd - (ZesUur + Pauze))
                Else
                    Uren135 = (ZesUur - BeginTijd)
                    Uren100 = (EindTijd - ZesUur)
                End If
            End If
        Else
            If BeginTijd >= ZevenUur Then
                If EindTijd < BeginTijd Then
                    If ((EindTijd - MidderNachtVroeg) + (MidderNachtLaat - BeginTijd)) > ZesUur Then
                        Uren135 = ((EindTijd - MidderNachtVroeg) + (MidderNachtLaat - (BeginTijd + Pauze)))
                    Else
                        Uren135 = ((EindTijd - MidderNachtVroeg) + (MidderNachtLaat - BeginTijd))
                    End If
                Else
                    Uren135 = (EindTijd - BeginTijd)
                End If
            Else
                If EindTijd > ZevenUur Then
                    If (EindTijd - BeginTijd) > ZesUur Then
                        Uren135 = (EindTijd - ZevenUur)
                        Uren100 = (ZevenUur - (BeginTijd + Pauze))
                    Else
                        Uren135 = (EindTijd - ZevenUur)
                        Uren100 = (ZevenUur - BeginTijd)
                    End If
                Else
                    If (EindTijd - BeginTijd) > ZesUur Then
                        Uren100 = (EindTijd - (BeginTijd + Pauze))
                    Else
                        If EindTijd < BeginTijd Then
                            If BeginTijd < WelGeenOverwerk Then
                               If ((EindTijd - MidderNachtVroeg) + (MidderNachtLaat - BeginTijd)) > ZesUur Then
                                    Uren135 = ((EindTijd - MidderNachtVroeg) + (MidderNachtLaat - ZevenUur))
                                    Uren100 = (ZevenUur - (BeginTijd + Pauze))
                                Else
                                    Uren135 = ((EindTijd - MidderNachtVroeg) + (MidderNachtLaat - BeginTijd))
                                End If
                            Else
                                If ((EindTijd - MidderNachtVroeg) + (MidderNachtLaat - BeginTijd)) > ZesUur Then
                                    Uren135 = ((EindTijd - MidderNachtVroeg) + (MidderNachtLaat - (BeginTijd + Pauze)))
                                Else
                                    Uren135 = ((EindTijd - MidderNachtVroeg) + (MidderNachtLaat - BeginTijd))
                                End If
                            End If
                        Else
                            If (EindTijd - BeginTijd) > ZesUur Then
                                Uren100 = (EindTijd - (BeginTijd + Pauze))
                            Else
                                Uren100 = (EindTijd - BeginTijd)
                            End If
                        End If
                    End If
                End If
            End If
        End If
>>>     Range("F" & Row).Formula = Uren100 <<<
        Range("G" & Row).Formula = Uren135
        Range("I" & Row).Formula = Uren100 + Uren135
        Range("D" & Row).Formula = "Maandag"


Hierna volgt nog een aantal keer de code vanaf "If DagVanDeWeek = 1 Then" maar dan voor de dinsdag, woensdag en donderdag. Vrijdag zaterdag en zondag ben ik nog niet aan begonnen. Aan het verfijnen / opschonen van de code ben ik ook nog niet toegekomen (begin net met VBA, dus ben nog een n00b op dit gebied :+)
j_du_pee schreef op 28 August 2003 @ 12:01:
misschien staat er een preciezere error in de event log ?
In de eventlog wordt geen event weggeschreven.

[ Voor 34% gewijzigd door Verwijderd op 28-08-2003 14:21 ]


  • MrDry
  • Registratie: December 2001
  • Laatst online: 21-08 16:48

MrDry

Desperados!

Maak de code eens op zoals hieronder...je code is nu onleesbaar.
code:
1
2
3
4
5
6
7
If (EindTijd - BeginTijd) > ZesUur Then
   Uren135 = (ZesUur - BeginTijd)
   Uren100 = (EindTijd - (ZesUur + Pauze))
Else
   Uren135 = (ZesUur - BeginTijd)
   Uren100 = (EindTijd - ZesUur)
End If


ennu...op welke regel krijg je de foutmelding?

[ Voor 9% gewijzigd door MrDry op 28-08-2003 13:50 ]

Quod licet lovi, non licet bovi


  • farlane
  • Registratie: Maart 2000
  • Laatst online: 21-08 18:33
Ik kriig de indruk dat het ook makkelijker kan. Duidelijker iig ....

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


Verwijderd

Topicstarter
farlane schreef op 28 August 2003 @ 13:53:
Ik kriig de indruk dat het ook makkelijker kan. Duidelijker iig ....
Dat staat er ook bij, verfijnen en opschonen moet nog gebeuren, eerst werkend krijgen is mijn motto. Maar dat het beter kan, ongetwijfeld.

Verwijderd

Topicstarter
[]

[ Voor 100% gewijzigd door Verwijderd op 28-08-2003 14:06 ]


Verwijderd

Topicstarter
MrDry schreef op 28 August 2003 @ 13:49:
Maak de code eens op zoals hieronder...je code is nu onleesbaar.
code:
1
2
3
4
5
6
7
If (EindTijd - BeginTijd) > ZesUur Then
   Uren135 = (ZesUur - BeginTijd)
   Uren100 = (EindTijd - (ZesUur + Pauze))
Else
   Uren135 = (ZesUur - BeginTijd)
   Uren100 = (EindTijd - ZesUur)
End If


ennu...op welke regel krijg je de foutmelding?
Het vreemde is dat de regel waarop het fout gaat, de eerste 94 keer wel goed gaat (is getest). Het lijkt er dus op of er een veld niet gecleared wordt ????

  • MrDry
  • Registratie: December 2001
  • Laatst online: 21-08 16:48

MrDry

Desperados!

Op welke regel kreeg je nou de foutmelding? Zet er even een merkje bij zodat we kunnen zien waar het is.

[offtoppic]
Als je wat wilt wijzigen of toevoegen aan je eigen bericht gebruik dan de EDIT knop...staat veel netter :)
[/offtopic]

Quod licet lovi, non licet bovi


Verwijderd

Topicstarter
MrDry schreef op 28 August 2003 @ 14:13:
Op welke regel kreeg je nou de foutmelding? Zet er even een merkje bij zodat we kunnen zien waar het is.

[offtoppic]
Als je wat wilt wijzigen of toevoegen aan je eigen bericht gebruik dan de EDIT knop...staat veel netter :)
[/offtopic]
Verkeerd klikken is ook een kunst. 8)7 |:(

Tussen de >>> <<< gaat het fout, maar het vreemde is wel dat ie deze regel al 94 keer zonder problemen uitvoert.

[ Voor 14% gewijzigd door Verwijderd op 28-08-2003 14:23 ]


  • j_du_pee
  • Registratie: Maart 2000
  • Laatst online: 23-09-2024

j_du_pee

du pain, du vin, du pee

okee, dus
>>> Range("F" & Row).Formula = Uren100 <<<
gaat fout.

Als je nu eens met een msgbox oid kijkt wat voor waarden Row en Uren100 hebben op het moment dat het fout gaat, ik neem aan dat daar dan iets vreemds in staat ;)

kaart != map && bottel != fles
Wacht op antwoord


Verwijderd

Topicstarter
j_du_pee schreef op 28 August 2003 @ 14:32:
okee, dus
[...]
gaat fout.

Als je nu eens met een msgbox oid kijkt wat voor waarden Row en Uren100 hebben op het moment dat het fout gaat, ik neem aan dat daar dan iets vreemds in staat ;)
De waarde van Row = 95 dat klopt. De waarde van Uren100 is 0:30:00, op zich dus geen vreemde waarde. Echter hij klopt niet want Uren100 moet 0 zijn. (zijn nachtelijke uren op donderdag en die vallen in het Uren135 gebied). -> ff verder zoeken.

[ Voor 5% gewijzigd door Verwijderd op 28-08-2003 14:38 ]


  • j_du_pee
  • Registratie: Maart 2000
  • Laatst online: 23-09-2024

j_du_pee

du pain, du vin, du pee

ik programmeer normaal geen vba, maar zou 0:30:00 geinterpreteerd kunnen worden als deel door 30 -->deel door 0<--- :?

en dat de voorgaande 95 dus meer dan 00 seconden aangaven ;)

kaart != map && bottel != fles
Wacht op antwoord


Verwijderd

Topicstarter
Ik heb het gevonden, ik had nog geen voorwaarde ingebouwd waarbij eindtijd EN begintijd voor ZesUur liggen, bij deze ingebouwd en werken.
Pagina: 1