Hallo Johan, ook goede
morgen middag
de formule die op de manier van Haije gegenereerd wordt in een macro module is zeker moeilijk, omdat ze werkt met celverwijzing vanuit een bepaalde cel. R staat voor Row en C voor Collum.
Als Cel A1 geselecteerd is, en je wilt iets berekenen met de waarde van cel D1, dan moet je formule iets zijn als .....R[1] C[+3] of iets dergelijke...
Bij C[+3] ga je dus een cel die drie kolommen verder staat selecteren of bewerken, naargelang de rest van de code.
Bovendien wordt met het stukje code (ActiveCell.FormulaR1C1 =) de daaropvolgende formule in een cel geplaatst, iets wat we net willen verwijderen.
Moeilijk en zeer gebruiksonvriendelijk, maar soms nuttig.
Probleem met tellen met variabelen in VBA:
Je kan een Variabele Var = 1 to 5 gebruiken om een cel op een andere rij in dezelfde kolom te selecteren:
Dim Var As Variant
For Var= 1 to 5
[b]Range[/b]("A" & Var).Select
Msgbox(Var) 'dan zie je wat er gebeurt :-)
Next
De loop zal cel A1 selecteren, dan A2, A3, A4, A5 en dan uit de loop gaan.
wil je echter hetzelfde doen met kolommen, dan is het niet meer zo dat je Van A naar B kan door bij A een variabele te tellen.
Dim Var As Variant
For Var= 1 to 5
[b]Range[/b](Var & "1").Select
Next
Je kan geen getallen gebruiken voor een kolom als je "Range" aanduiding gebruikt.
Daarom heb ik in de code, waar nodig, over gegaan naar de aanduiding
Cells()Cells werkt met RC (Row,Colum)(Rij, Kolom) als (1, 2) .... Rij 1, Kolom 2.
Nu kan je wel een variabele aan een kolom 1 (A) toevoegen.
Dim Var As Variant
For Var= 1 to 5
Cells(1 , 1 + Var).Select
Msgbox(Var)
Next
Wel opletten, gewone celaanduiding zoals "A1" is dus CR (Kolom, Rij)
Bij celaanduiding met
=Cells(1, 2) is dit RC (Rij, Kolom) en zonder aanhalingstekens, R en C gescheiden door een komma.
Groeten,
SoftAid