Help!

PC-Problemen?
De vrijwilligers van Oplossing.be zoeken gratis met u mee!

Hulp bij posten

Recente topics

Auteur Topic: formule na ActiveCell.FormulaR1C1 in VB  (gelezen 5485 keer)

0 leden en 1 gast bekijken dit topic.

Offline Justaguy

  • Lid
  • *
  • Berichten: 86
  • Wie zoekt, die vindt ... het in Oplossing.be
formule na ActiveCell.FormulaR1C1 in VB
« Gepost op: 13 maart 2007, 21:55:14 »
Wordt met ActiveCell.FormulaR1C1 de formule in VB altijd als tekst ("=...") in het veld geplaatst?

ActiveCell.FormulaR1C1 = "=OFFSET(R1C2,MATCH(aantalrijen,R[-aantalrijen+1]C:R[-1]C,0),-1)"

Het zoekgetal is variabel en wordt gebruikt in meerdere rijen (met for ...next)
bv.
    For y = 1 To 7
        ActiveCell.Offset(0, 1).Range("A1").Select
        ActiveCell.FormulaR1C1 = "=OFFSET(R1C2,MATCH(aantalrijen,R[-aantalrijen + 1]C:R[-1]C,0),-1)"
    Next y

Hoe kan ik dit anders formuleren en doen werken?
SYSTEEM: AMD Athlon 1Ghz - 256Mb RAM - Win XP - Office2003 – kabel)

Offline RedHead

  • Excel-Expert
  • Ambassadeur
  • *****
  • Berichten: 2.283
  • Geslacht: Man
  • Met Excel lukt 't wel.... (toch???)
Re: formule na ActiveCell.FormulaR1C1 in VB
« Reactie #1 Gepost op: 13 maart 2007, 22:45:42 »
Justaguy,
Citaat
Wordt met ActiveCell.FormulaR1C1 de formule in VB altijd als tekst ("=...") in het veld geplaatst?
Antwoord: Ja! In VBA wordt dit altijd als een string gezien. Dat geeft niets, want de sheet zet dit wel weer om naar een funtie/formule.

Ik zou in iedergeval niet met het For-Next loopje werken. Als je toch weet in welke range het is, is het mooier om een For Each-Next te gebruiken. Voorbeeld: For Each rng In Range("A1:A10")
    rng.FormulaR1C1 = "=sum(R[1]C[1]:R[10]C[1])"
Next
Hierbij krijgt iedere cel in de range A1:A10 de formule: (cel A1) =sum(B1:B10) ... (cel A10) =SUM(B11:B20). De vierkante haken staan voor 'relatief bereik'. Zonder de haken zou iedere cel in de range de (absolute)formule =SUM($A$1:$A$10) hebben. (heeeeeeeeeeeeeele  lastige materie.... die R1C1 notatie! ;D :()

Je...
Citaat
ActiveCell.Offset(0, 1).Range("A1").Select
...kan je volgens mij netter noteren. Dat zal in jouw loopje iets moeten worden van Range("A1").Offset(0, y).Selectof ActiveCell.Offset(0, 1).SelectEr vanuit gaande dat je je formule in de range A1:G1 wilt hebben... Ik snap anders niet helemaal wat die 'Range("A1")' er nog bij doet?

Maar wat is het probleem nou precies? Heb je misschien een voorbeeldbestandje er bij?  ???

Groet, Leo
______________________________

Groet, Leo

Offline Erik Van Geit

  • Excel-Expert
  • Ervaren lid
  • *****
  • Berichten: 306
  • Geslacht: Man
Re: formule na ActiveCell.FormulaR1C1 in VB
« Reactie #2 Gepost op: 14 maart 2007, 00:36:51 »
Hallo, Justaguy,

Je hebt blijkbaar de macrorecorder gebruikt en dan de formule willen aanpassen. Als je een variabele in de formule wil invoegen is het nodig om de "string" te onderbreken.
Voorbeeld
formula in A1 =B1
ActiveCell.FormulaR1C1 = "=RC[1]"Wil je nu de 1 door een variabele vervangen, dan gebeurt dit als volgt.Dim i As Integer
i = 1

ActiveCell.FormulaR1C1 = "=RC[" & i & "]"


Wellicht is de formula die je nodig hebt
ActiveCell.FormulaR1C1 = "=OFFSET(R1C2,MATCH(" & aantalrijen & ",R[-" & aantalrijen + 1 & "]C:R[-1]C,0),-1)"

Wat wilde je nu bereiken met die For ... Next lus? Is dit misschien wat je bedoelde ?
For y = 1 To 7
ActiveCell.Offset(0, y).FormulaR1C1 = "=OFFSET(R1C2,MATCH(" & aantalrijen & ",R[-" & aantalrijen + 1 & "]C:R[-1]C,0),-1)"
Next y

In bovenstaand voorbeeld kan je zien dat het niet nodig is om cellen te selecteren. Ook de lus is niet nodig: probeer dit maar eens.     ActiveCell.Offset(0, 1).Resize(1, 7).FormulaR1C1 = "=OFFSET(R1C2,MATCH(" & aantalrijen & ",R[-" & aantalrijen + 1 & "]C:R[-1]C,0),-1)"
beste groeten,
Erik

PS: zo, mijn post #1 zit er op :)

Offline RedHead

  • Excel-Expert
  • Ambassadeur
  • *****
  • Berichten: 2.283
  • Geslacht: Man
  • Met Excel lukt 't wel.... (toch???)
Re: formule na ActiveCell.FormulaR1C1 in VB
« Reactie #3 Gepost op: 14 maart 2007, 08:46:26 »
Erik, Welkom op dit forum. En aan je bijdrage te zien, hebben we er weer een kundige oplosser bij. ;D

En met je...
Citaat
PS: zo, mijn post #1 zit er op
...begrijp ik dat we nog regelmatig antwoorden van je gaan krijgen. ;)

Groet, Leo
______________________________

Groet, Leo

Offline Erik Van Geit

  • Excel-Expert
  • Ervaren lid
  • *****
  • Berichten: 306
  • Geslacht: Man
Re: formule na ActiveCell.FormulaR1C1 in VB
« Reactie #4 Gepost op: 14 maart 2007, 10:46:38 »
Dankjewel voor je welkomstwoord, Leo :-)

Er zijn een aantal zaken in Excel die heel aantrekkelijk zijn naar mijn smaak. Andere aspecten minder, maar dat zal voor iedereen wel zo zijn zeker. De ene jongleert met Pivot Tables, de andere met grafieken. Ik beschouw Excel dikwijls als een "speeltje", (scheiding tussen beroep en hobby is bij mij dikwijls ver te zoeken) vooral VBA. Een forum - dit is het eerste nederlandstalige forum waarop ik lid ben - is leuk om je vaardigheden uit te breiden of te ontwikkelen. Ik kwam hier gisteren per ongeluk terecht en besloot dan maar eens te registreren. We zien wel.
Als je mijn naam intikt op google, zie je meteen een groot deel van mijn activiteiten. (muziek en excel)
Sorry voor het niet-excel-intermezzo, Justaguy.
Closing the off-topic part :)

beste groeten,
Erik

Offline Justaguy

  • Lid
  • *
  • Berichten: 86
  • Wie zoekt, die vindt ... het in Oplossing.be
Re: formule na ActiveCell.FormulaR1C1 in VB
« Reactie #5 Gepost op: 15 maart 2007, 21:20:41 »
Bedankt guys  ;),

alles werkt naar behoren en ondertussen nog veel bijgeleerd ook.
Nogmaals thx.
SYSTEEM: AMD Athlon 1Ghz - 256Mb RAM - Win XP - Office2003 – kabel)

 


www.combell.com