[VBA/Excel] Formule aan een cel toewijzen

Pagina: 1
Acties:
  • 1.499 views sinds 30-01-2008
  • Reageer

  • hamsteg
  • Registratie: Mei 2003
  • Laatst online: 22:30

hamsteg

Species 5618

Topicstarter
Ik zit hier al een paar uur op te turen maar krijg het niet plat.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
'A3 = 3
'A4 = 4
Function funcWaaromGaatDitFout()
  ' Doet het wel (alleen als met "=" begonnen wordt)
  ' B3:A3/A4
  ' ------------------------------------------------------
  Range("B3").Select
  Selection.Value = "=" + Selection.Offset(0, -1).Address & _
                    "/" & _
                    Selection.Offset(1, -1).Address
  
  ' Doet het niet (met een '=' zoals boven: error 1004.
  ' B4:if(A4>A3;0;1)
  ' -------------------------------------------------------
  Range("B4").Select
  Selection.Value = "+" & "if(" + Selection.Offset(0, -1).Address & _
                    ">" & _
                    Selection.Offset(-1, -1).Address & _
                    ";0;1)"
End Function

Ik krijg de tweede toewijzing wel als string maar niet als formule in de cel. Het zal wel simpel zijn maar ik zie het niet.

Beginnen met de "+ïf" levert een string op die bij F2 + Enter evalueert tot functie. Dit moet onmiddellijk als functie worden ge-intepreteerd.
Geen plus direct beginnen de "if", levert een string op die alleen als ik F2 edit en er een + voor zet evalueert tot een functie.
Beginnen met een = levert een Run-time error 1004: Application defined or Object defined error op.

Waar gaan mijn twee hersencellen de fout in?

Niet quoten, zorgvuldige reacties volgens de regels worden zo weggewerkt: *knip*, reactie op geknipte reactie.


  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 22:12

TeeDee

CQB 241

Selection.Formula?

Heart..pumps blood.Has nothing to do with emotion! Bored


  • urk_forever
  • Registratie: Juni 2001
  • Laatst online: 08-07 18:17
^^^^ met hem. Selection.Formula = "=IF(bla;0;1)"

Hail to the king baby!


  • hamsteg
  • Registratie: Mei 2003
  • Laatst online: 22:30

hamsteg

Species 5618

Topicstarter
hamsteg schreef op dinsdag 28 augustus 2007 @ 12:11:
[...]
Nee, verandert niets. Ook hier de =, + en direct met if opties geprobeerd.
Nee, verandert niets. Ook hier de =, + en direct met if opties geprobeerd.
code:
1
2
3
4
  Selection.Formula = "=" & "IF(" + Selection.Offset(0, -1).Address & _
                    ">" & _
                    Selection.Offset(-1, -1).Address & _
                    ";0;1)"

Error 1004

[ Voor 50% gewijzigd door hamsteg op 28-08-2007 12:13 ]

Niet quoten, zorgvuldige reacties volgens de regels worden zo weggewerkt: *knip*, reactie op geknipte reactie.


  • whoami
  • Registratie: December 2000
  • Laatst online: 22:49
-> OFF

https://fgheysels.github.io/


  • urk_forever
  • Registratie: Juni 2001
  • Laatst online: 08-07 18:17
Ah, ik herinner het me net weer, had hetzelfde een paar weken geleden. Je moet als je formules in code maakt geen ; gebruiken maar een ,

Dus

Visual Basic:
1
2
3
4
Selection.Formula = "=IF(" + Selection.Offset(0, -1).Address & _
                    ">" & _
                    Selection.Offset(-1, -1).Address & _
                    ",0,1)"


zou moeten werken.

Hail to the king baby!


  • hamsteg
  • Registratie: Mei 2003
  • Laatst online: 22:30

hamsteg

Species 5618

Topicstarter
urk_forever schreef op dinsdag 28 augustus 2007 @ 12:20:
Ah, ik herinner het me net weer, had hetzelfde een paar weken geleden. Je moet als je formules in code maakt geen ; gebruiken maar een ,

Dus

Visual Basic:
1
2
3
4
Selection.Formula = "=IF(" + Selection.Offset(0, -1).Address & _
                    ">" & _
                    Selection.Offset(-1, -1).Address & _
                    ",0,1)"


zou moeten werken.
En dat doet het. Ships ... vaag gaat nu ergens een belletje rinkelen. Deze functie wordt als initiële VBA opgeslagen ... niet met het Excel sausje.

THANX !

Edit: @Lustucru, dat is de echte oplossing.

[ Voor 4% gewijzigd door hamsteg op 28-08-2007 12:47 ]

Niet quoten, zorgvuldige reacties volgens de regels worden zo weggewerkt: *knip*, reactie op geknipte reactie.


  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

'VBA trekt zich standaard niks aan van locale instellingen. Die ';' is dus fout: de standaard argumentseparator = ",".

Of andersom: gebruik formulalocal :)

edit:
traag

[ Voor 5% gewijzigd door Lustucru op 28-08-2007 12:28 ]

De oever waar we niet zijn noemen wij de overkant / Die wordt dan deze kant zodra we daar zijn aangeland


  • Bolukan
  • Registratie: Oktober 2002
  • Laatst online: 09-07 19:01
Type de formule eens in cel B3, laat de cursor daar staan en type dan de eerste regel van onderstaande in het 'direct'-scherm van VB:
Visual Basic:
1
print selection.formular1c1

Je krijgt dan:
Visual Basic:
1
=IF(RC[-1]>R[1]C[-1],0,1)

Vind ik beter mee te werken dan de address-es die je gebruikt.
Pagina: 1