Gå til innhold

VBA mot Excel trøbler (sette inn formler)


Anbefalte innlegg

Hei

Jeg trenger å fylle inn formler i et Excel-ark som henter noe data fra en database. Ved arkets change-event fyrer jeg først av en funksjon som setter inn riktig formel øverst i de aktuell kolonnene.

Public Function SettFormel()
   Range("v9").Formula =  "test"
   Range("w9").Formula = "=HVIS(K9='';'';(K9-L9) &' / '& M9)"
   Range("x9").Formula = "=HVIS(J9="";"";J9-B$1)"
   Range("y9").Formula = "=HVIS(C9="";"";C9*X9)"
   Range("z9").Formula = "=HVIS(O9="";"";HVIS(O9=1;0;F9))"
   Range("aa9").Formula = "=HVIS(O9="";"";HVIS(O9=1;F9;0))"
End Function

 

Etter dette kjører onChange-eventen en autofill til end of data.

 

Problem : v9 (test-kolonne med kun text) går in som varm kniv, men funksjonen nekter å sette inn formler, uansett om jeg bruker " eller '. Ser ut til at VBA ikke liker det når jeg bruker " mens excel nekter å ta i mot '. Noen som husker noen triks her ?

Lenke til kommentar
Videoannonse
Annonse
Hei

Jeg trenger å fylle inn formler i et Excel-ark som henter noe data fra en database. Ved arkets change-event fyrer jeg først av en funksjon som setter inn riktig formel øverst i de aktuell kolonnene.

Public Function SettFormel()
   Range("v9").Formula =  "test"
   Range("w9").Formula = "=HVIS(K9='';'';(K9-L9) &' / '& M9)"
   Range("x9").Formula = "=HVIS(J9="";"";J9-B$1)"
   Range("y9").Formula = "=HVIS(C9="";"";C9*X9)"
   Range("z9").Formula = "=HVIS(O9="";"";HVIS(O9=1;0;F9))"
   Range("aa9").Formula = "=HVIS(O9="";"";HVIS(O9=1;F9;0))"
End Function

 

Etter dette kjører onChange-eventen en autofill til end of data.

 

Problem : v9 (test-kolonne med kun text) går in som varm kniv, men funksjonen nekter å sette inn formler, uansett om jeg bruker " eller '. Ser ut til at VBA ikke liker det når jeg bruker " mens excel nekter å ta i mot '. Noen som husker noen triks her ?

8949018[/snapback]

 

Hvis Excel forventer " så gi Excel "

 

Enkleste måten i VBA er å bruke Chr(34)

Lenke til kommentar

Et gåsetegn i en VBA-streng er to påfølgende gåsetegn. For å få resultat

J9="";"";

må du i VBA skrive

J9="""";"""";

eller eventuelt bruke CHR(34).

 

Viktigere er at Formula-property'en skal ha engelske Excelformler. Altså ikke HVIS men IF, ikke semikolon men komma, ...

Spill inn en makro mens du setter inn formelen manuelt, så får du et godt utgangspunkt. Riktignok i FormulaR1C1 -format, men det er da også mye bedre egnet for programmatisk formelinnskrivning.

 

(Den norske formelen ligger i property FormulaLocal, men bare i norsk Excel, så styr unna det i programmering.)

 

HTH. Beste hilsen Harald

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...