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

Excel berekent niet goed op alle tabs

Status
Niet open voor verdere reacties.

Nicu

Gebruiker
Lid geworden
23 jan 2012
Berichten
222
Ik heb een mooi formulier die, als je op de datum klikt, om de zwangerschapduur vraagt en dan automatisch berekent hoe oud een kind nu echt is.
Elke dag verder, rekent het formulier er zelf een dag bij. Dit heb ik in orde gekregen m.b.v. dit mooie forum.
Nu doet het formulier dit prima bij de 1e 3 tabbladen, maar bij de resterende 3 andere tabbladen telt hij er niet meer automatisch een dag bij op. Ik kan maar niet opspeuren wat hier nu mis mee is. Ik hoop dat iemand dit wel ziet....
Ik heb het bestand bijgevoegd via link, ik kreeg het helaas niet kleiner dan 100kb. Bestand via wetransfer

En dit is de code die er gebruikt wordt:

Code:
Private Sub Workbook_Open()
For j = 1 To 3
    With Sheets("Unit " & j)
        If CDbl(.Cells(43, 12)) < CDbl(Date) Then
            For i = 5 To 33 Step 4
                If .Cells(i, 2) <> vbNullString Then
                    weeks = DateDiff("w", .Cells(i, 2), Date, 2): days = DateDiff("d", .Cells(i, 2), Date, 2) Mod 7
                    .Cells(i, 2).Offset(, 1) = weeks & " wkn " & days & " dgn"
                    trm = Split(.Cells(i, 2).Offset(1), "+")
                    nuweeks = trm(0) + weeks: nudays = trm(1) + days
                    If nudays > 6 Then
                        nuweeks = nuweeks + IIf(nudays Mod 6 <> 0, 1, 2)
                        nudays = nudays Mod 6
                    End If
                    .Cells(i, 2).Offset(2) = "nu " & nuweeks & "+" & nudays
                End If
            Next
        End If
        .Cells(43, 12) = Date
    End With
Next
End Sub

Groet,

Josh
 
Laatst bewerkt:
Al eraan gedacht in plaats van

Code:
For j = 1 To 3

Code:
for j=1 to sheets.count

te gebruiken ?

En berekent ( in de titel) ipv berekend ?
 
Laatst bewerkt:
Heb ik gelijk geprobeerd, dacht ook dat het hierin zat...maar ik kreeg bij opstarten gelijk een foutmelding:
Fout 9 tijdens uitvoering:
Het subscript valt buiten het bereik

Heb de datum veranderd en er gebeurd bij de laatste 3 tabs helaas niets, bij de 1e 3 wel.

Na een hele avond turen naar een passende oplossing, werd mijn Nederlands er niet beter op ;-)
 
Wijzig de namen van de werkbladen van Unit 1 t/m Unit 6

gebruik F8 om stap-voor-stap door de code te lopen.

Dan had je toch meteen gezien bij

With Sheets("Unit " & j)

dat sheet("Unit 4") niet bestaat ?
 
Hier had ik het al ingezocht, alles sheets had ik al zo genoemd, maar dan bleef nog het probleem. Ik ga er dinsdag maar opnieuw naar kijken.....
 
De oplossing van SNB werkt prima als ik alleen tabs heb met Unit 1-6, ik heb echter meer tabs en als ik die actieveer, dan krijg ik weer een foutmelding

foutmelding.jpg

Code:
For j = 1 To Sheets.Count
    With Sheets("Unit " & j)    -----> in deze regel zit volgens mij het probleem, maar ik weet niet wat ik dan anders moet doen...
        If CDbl(.Cells(43, 12)) < CDbl(Date) Then
            For i = 5 To 33 Step 4

Ik hoop dat jullie kunnen helpen, zodat de berekeningen wel goed doorkomen in alle tabs
 
Zoals gezegd gebruik F8; en anders eerst maar een cursus VBA en/of een goed VBA boek doornemen.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan