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

Reference in VBA naar A style zetten??

Status
Niet open voor verdere reacties.

Iloontje2506

Nieuwe gebruiker
Lid geworden
13 mei 2017
Berichten
2
Ik heb een macro opgenomen in Excel 2013 ENG. In mijn sheet het ik de Reference met de tabellen A,B,C etc. met de regelnummers (A1 style??)
Maar nou heb ik een tikfoutje gemaakt tijdens het opnemen van mijn macro en die wilde ik even aanpassen, maar nou krijg ik een R1 of RC reference te zien in de VBA?
Iemand enig idee hoe ik dit terug kan zetten naar A1?

Bij File - Options - Formula's staat deze NIET aangevinkt!:confused:
 
Plaats het bestand met de code even dat praat wat makkelijker.

A1 = cells(1) of [A1] of Range("A1")
 
Je bedoelt dit?
Code:
Application.ReferenceStyle = xlA1 [COLOR="#008000"]'xlR1C1[/COLOR]

Overigens is R1C1 gelijk aan A1.
Row en Column dus.
 
Laatst bewerkt:
Ik vermoed dat Ts de formule wil aanpassen in A1 style die in een module staat.
....formulaR1C1 = "blabla"
 
Je zou dit als hulpmiddel kunnen gebruiken om een R1C1 style adres te vertalen naar een A1 style.
De aanroep bijvoorbeeld:
Code:
Sub vrt()
    MsgBox AddressA1("R10C35")
    MsgBox AddressA1("R[10]C[35]")
End Sub
Er zijn meer notatiemogelijkheden, maar het is een hulpmiddel.

De functie zelf:
Code:
Function AddressA1(AddressR1C1 As String) As String
    Dim R As Long
    Dim C As Long
    
    AddressR1C1 = Replace(AddressR1C1, "[", "")
    AddressR1C1 = Replace(AddressR1C1, "]", "")

    R = Mid(AddressR1C1, 2, InStr(2, AddressR1C1, "C") - 2)
    C = Mid(AddressR1C1, InStr(2, AddressR1C1, "C") + 1)
    
    AddressA1 = Cells(R, C).Address
    
End Function
 
Laatst bewerkt:
Kijk bijvoorbeeld eens naar de eerste 2 regels in je eigen code:
Code:
    Range("F5").Select
    ActiveCell.FormulaR1C1 = "=VALUE(R[10]C[-3])"

Eerst wordt cel F5 actief gemaakt.
De R1C1 notatie gaat vervolgens relatief van F5 te werk.
R[10] is dan 5 + 10 = Rij 15 (De 5 is de huidige regel)
C[-3] is dan 6 - 3 = 3 en dat is dus kolom 3 (De 6 is de huidige kolom F, letter 6 in het alfabet)
De formule in F5, =VALUE(R[10]C[-3]) bevat dus een verwijzing naar cel C15.
In cel F5 zal je dan zien staan: =WAARDE(C15)

De R1C1 notatie is dus altijd relatief van de huidige cel.
Dus:
ActiveCell.FormulaR1C1 = "=VALUE(R[10]C[-3])"

Wordt dan:
ActiveCell.Formula = "=VALUE(C15)"

Misschien dat dat het wat duidelijker maakt?
 
Laatst bewerkt:
Ik denk dat Ilona gewoon dit bedoelt.
Code:
range("g1") = "=value(c16)"
 
Die hele code kan beter wat dat betreft, maar ik wilde uitleggen hoe om te gaan met het vertalen van de R1C1 notatie naar A1 notatie.
 
Overigens is er een ingebouwde functie om A1 naar R1C1 te vertalen en andersom, inclusief opties voor absolute verwijzingen in alle combinaties:
Application.ConvertFormula
 
Dank je, die kende ik ook niet :thumb:
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan