Excel: Absolute verwijzing in formule RC versus $$

Status
Niet open voor verdere reacties.

Herman5

Nieuwe gebruiker
Lid geworden
13 jan 2010
Berichten
2
Hallo forum,

In een werkblad staan (heel veel) entiteiten met daar direct onder in dezelfde kolom B een telkens wisselend aantal velden die gekozen kunnen worden. Gevolgd door een lege rij. Als je voor de Entiteit een x plaatst dan wil je alle daaronder staande velden hebben. Wil je enkele velden selecteren dan zet je de x voor dat bepaalde veld in kolom A.

Nu wil ik dat er in kolom D (verborgen) een x geplaatst wordt achter alle velden als er voor de Entiteit een x geplaatst is.

Daarvoor heb ik in D de volgende formule =ALS($A$596="X";"X";ALS(A608="X";"X";""))
$A$596 is dus de rij waar de Entiteit staat en in rij 608 een veld.

Ik wil deze formules via VBA / macro in het werkblad plaatsen.
Ik heb de volgende code:
Code:
    ActiveCell.FormulaR1C1 = "x"
    ActiveCell.Offset(1, 3).Select
    ActiveCell.FormulaR1C1 = "= IF(R[-1]C[-3] =""X"",""X"",IF(RC[-3]=""X"",""X"",""""))"
    r = Range("D" & Rows.Count).End(xlUp).Row
    i = Range("C" & r).End(xlDown).Row
    Cells(r, 4).AutoFill Destination:=Range(Cells(r, 4), Cells(i, 4)), Type:=xlFillCopy

Mijn macro werkt helaas niet helemaal zoals het moet want hij schrijft de formule als: =ALS(A596="X";"X";ALS(A608="X";"X";"")) zonder de $ voor de absolute verwijzing.
Hoe moet ik de code R[-1]C[-3] aanpassen?

Groet,
Herman
 
Code:
     cells(596,1) = "x"
     cells(596,4)= "= IF($A$596 =""X"",""X"",IF($A$608=""X"",""X"",""""))"
     cells(596,4).resize(cells(rows.count,4).end(xlup).row-596).filldown
 
Hoi Snb,

Sorry, maar of ik heb het niet goed uitgelegd of jij hebt mij niet begrepen (ik zal het dus wel niet goed hebben uitgelegd:eek:)

De bedoeling is dat ik telkens op een andere regel de macro activeer en dat de macro dan dus uitgaat van de positie waar ik dan (in kolom A) sta.

Het probleem is alleen dat als ik de formule via VBA in de cel (in kolom D) plaatst deze niet de $-tekens bij de eerste celverwijzing meekrijgt. Dat is mijn probleem.

Ik heb oa ook geprobeert om via een variabele (string) het adres van de cel (in kolom A) in de formule mee te geven maar daar krijg ik dan een foutmelding 1004 op.

Code:
Dim a
    a = ActiveCell.Address    '   dit is dan dus bijv. cel A596 of een willekeurige en diverse andere
    ActiveCell.FormulaR1C1 = "= IF(" & a & " =""X"",""X"",IF(RC[-3]=""X"",""X"",""""))"
 
loopt bij mij als een zonnetje:
Code:
Sub nieuwe()
  With ActiveCell
     .Value = "x"
     .Offset(, 3) = "= IF(" & .Address & " =""X"",""X"",IF(" & .Offset(12, 3).Address & "=""X"",""X"",""""))"
     .Offset(, 3).Resize(Cells(Rows.Count, 4).End(xlUp).Row - .Row + 1).FillDown
  End With
End Sub
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan