Formules in cellen plaatsen dmv loop

Status
Niet open voor verdere reacties.

dprod

Gebruiker
Lid geworden
2 jun 2010
Berichten
80
Beste mensen,

Ik zit met een vraag waar vast een oplossing voor is maar waar ik nu al uren voor aan het googlen ben.
De wanhoop nabij besloten mijn vraag dan maar te posten... :confused:

De situatie:
Er zijn twee werkbladen in het excel workbook:
De eerste is het totaal overzicht (Sheet1).
De tweede een urenkaart (Sheet2).

Ik heb een form gemaakt/geschreven waarmee je nieuwe urenkaarten kunt toevoegen.
d.m.v. copy... After:=Sheets(lSheet) ... lSheet is variabel voor de laatste sheet.

Er onstaat dan:
Een workbook met 1 totaal overzicht... sheets(1)
En vanaf sheets(2) tot een oneindig (variabel) aantal sheets met tijdkaarten.


Voor elke tijdkaart die wordt toegevoegd dient er op het totaal overzicht formules te worden ingevuld.
O.a. om de namen/contracturen van de ingevulde tijdkaarten te overzien.

De formules die ik gebruik in het overzicht zijn als volgt (NIET VBA):
Range("A5") =ALS(Blad1!$F$9>0;Blad1!$F$9;"")
Range("B5") =ALS(Blad1!$M$9>0;Blad1!$M$9;"")
Range("C5") =ALS(Blad1!$F$9>0;ALS(Blad1!$I$83>0;Blad1!$I$83;"0");"")
Range("D5") =ALS(Blad1!$F$9>0;ALS(SOM($C$5-$B$5)=0;"";SOM($C$5-$B$5));"")
Range("E5") =ALS(Blad1!$F$9>0;ALS(Blad1!$O$48>0;"Ja";"Nee");"")

Bij elke tijdkaart staat de informatie op dezelfde plek! (dus de cellen hoeven niet te veranderen).
ALLEEN het bladnummer hoeft te veranderen in Blad2, Blad3... etc (ligt uiteraard aan het aantal sheets wat wordt toegevoegd).

Op Row 5 komen dus de formules voor Blad1
Op Row 6 komen dus de formules voor Blad2
Op Row 7 komen dus de formules voor Blad3... etc etc

De VBA-CODE die ik nu gebruik is o.a.:
.FormulaR1C1 = "=IF(Blad" & lSheet & "!R[3]C[5]>0,Blad" & lSheet & "!R[3]C[5],"""")"

Als ik deze in een loop zet om voor elke tijdkaart de formules in te voegen.
verandert per regel toch de formule mee!
BLIJKBAAR wordt de R[3] dan ineens R[4] ?????

X_x

Ik weet dat de omschrijving nogal omslagtig is maar ik mag het bestand niet posten!
Hopenlijk kunnen jullie mij toch helpen dit probleem te verhelpen!

gebruikte VBA-code:
Code:
Private Sub OK_Click()

Dim i As Integer
Dim lSheet As Integer
Dim nForm As Integer
Dim aSheets As Integer
Dim oRange As Range

'Geeft het ingevuld "aantal" in 't formulier, als waarde aan de variabele aSheets.
aSheets = aantalSheets.Value

'Loop om het "aantal" sheets aan te maken wat ingevuld is.
For i = 1 To aSheets

'Geeft het totaal aantal sheets, als waarde aan de variabele lSheet.
lSheet = ActiveWorkbook.Sheets.Count - 1
    Sheets("Blad1").Copy After:=Sheets(lSheet + 1) 'kopie�rt de eerste Sheet, naar de plek voor de laatste Sheet(verborgen).
    Sheets("Blad1 (2)").Name = "Blad" & lSheet 'veranderd de naam van de gekopie�rde Sheet in "Blad+lSheet", _
                                                met lSheet(variabele) als laatste waarde van het totaal(count).

    For nForm = 1 To 5
        If nForm = 1 Then
        Set oRange = ActiveWorkbook.Sheets(1).Range("A" & i + 5)
        oRange.FormulaR1C1 = "=IF(Blad" & lSheet & "!R[3]C[5]>0,Blad" & lSheet & "!R[3]C[5],"""")"
        ElseIf nForm = 2 Then
        Set oRange = ActiveWorkbook.Sheets(1).Range("B" & i + 5)
        oRange.FormulaR1C1 = "=IF(Blad" & lSheet & "!R[3]C[11]>0,Blad" & lSheet & "!R[3]C[11],"""")"
        ElseIf nForm = 3 Then
        Set oRange = ActiveWorkbook.Sheets(1).Range("C" & i + 5)
        oRange.FormulaR1C1 = "=IF(Blad" & lSheet & "!R[3]C[3]>0,IF(Blad" & lSheet & "!R[77]C[6]>0,Blad" & lSheet & "!R[77]C[6],""0""),"""")"
        ElseIf nForm = 4 Then
        Set oRange = ActiveWorkbook.Sheets(1).Range("D" & i + 5)
        oRange.FormulaR1C1 = "=IF(Blad" & lSheet & "!R[3]C[2]>0,IF(SUM(R[-1]C[-1]-R[-1]C[-2])=0,"""",SUM(R[-1]C[-1]-R[-1]C[-2])),"""")"
        ElseIf nForm = 5 Then
        Set oRange = ActiveWorkbook.Sheets(1).Range("E" & i + 5)
        oRange.FormulaR1C1 = "=IF(Blad" & lSheet & "!R[3]C[1]>0,IF(Blad" & lSheet & "!R[42]C[10]>0,""Ja"",""Nee""),"""")"
        End If
        With oRange
        .Formula = Application.ConvertFormula(Formula:=oRange.Formula, fromreferencestyle:=Application.ReferenceStyle, toabsolute:=xlAbsolute)
        End With
    Next nForm

Next i 'Herhaalt de loop t/m aSheets.

    'Formulier sluiten.
    Unload Me
End Sub

Mijn dank is GROOT! :rolleyes:
 
dprod,

Als ik onderstaande formule opneem met de macrorecorder.
Code:
=ALS(Blad!$F$4>0;Blad!$F$4;"")
Komt dit er uit.
Code:
ActiveCell.Formula = "=IF(Blad!R4C6>0,Blad!R4C6,"""")"
Zonder de $ teken ziet de formule er zo uit en past zich dan zelf aan.
Code:
ActiveCell.FormulaR1C1 = "=IF(Blad!R[2]C[5]>0,Blad!R[2]C[5],"""")"
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan