[EXCEL VBA] Formules plaatsen in cel

Pagina: 1
Acties:

Onderwerpen

Vraag


Acties:
  • 0 Henk 'm!

  • KlaasJanBolhuis
  • Registratie: November 2020
  • Laatst online: 05-09 10:24
Wanneer ik vanuit VBA een formule plaats, waarin een 'naam' zit, komt er een foutmelding. Plak ik dezelfde formule in de cel, dan gaat het goed.

Ik gebruik Office 2016. Vanuit Access vul ik een Excel werkblad.

Mijn code:
temp = "=" & Chr(34) & "Betaling: " & Chr(34) & "& TEKST(Bedrag;" & Chr(34) & "€ #.##0,00" & Chr(34) & ")"
XL.Cells(40, 1).Value = temp
en geeft een fout

De waarde van de variabele temp is dan: ="Betaling: "& TEKST(Bedrag;"€ #.##0,00"). Als ik deze plak in excel, dan komt er geen foutmelding.

Alle reacties


Acties:
  • 0 Henk 'm!

  • g0tanks
  • Registratie: Oktober 2008
  • Laatst online: 02:38

g0tanks

Moderator CSA
Je zou het eens kunnen proberen met Formula: XL.Cells(40, 1).Formula = temp

Ultrawide gaming setup: AMD Ryzen 7 2700X | NVIDIA GeForce RTX 2080 | Dell Alienware AW3418DW


Acties:
  • +2 Henk 'm!

  • dixet
  • Registratie: Februari 2010
  • Laatst online: 20-09 13:15
Bij het vullen van een waarde in Excel is het van belang rekening te houden met het verschil tussen
  • de waarde die je ziet (geformatteerde waarde)
  • de waarde die Excel bewaard (ongeformatteerde waarde)
  • de formule die de getoonde waarde bepaald
Voor alle drie de situaties moet je in VBA een andere eigenschap gebruiken
  • .TEXT: toont de waarde zoals getoond wordt in de cel. Dus met alle opmaak. Een datum kan dus afhankelijk van de opmaak "15 jan", "2022-01-15", "15 januari 2022" enzovoort zijn. En als de cel smaller is dan de waarde bevat deze eigenschap alleen "####" omdat dat is wat je in de cel ziet
  • .VALUE2: toont de waarde zoals Excel hem intern bepaald heeft
  • .VALUE: zelfde als VALUE2, maar gebruikt voor datums en valutas de VBA date en currency types (waardoor je decimalen kan verliezen bij valuta)
  • .FORMULA: geeft de formuletekst
  • .FORMULAR1C1: geeft de formuletekst in R1C1 notatie
Wat jij wilt gebruiken is in dit geval .FORMULA, niet .VALUE

het gebruik van .VALUE is sowieso af te raden, gebruik voor de onderliggende data liever .VALUE2