Avatar billede Nikolaj_IP Juniormester
27. juni 2017 - 15:22 Der er 4 kommentarer og
1 løsning

Indsæt formular via VBA til dynamisk LOPSLAG over i lukket fil

Hejsa,

Jeg sidder og kæmper med at lave et LOPSLAG over i en lukket fil via VBA.

Har LOPSLAG'et som fungerende formel i D-kolonnen, den ser ca. sådan her ud:
=HVIS.FEJL(HVIS(C2="K";"--";HVIS(LOPSLAG(A2;'C:\Whatever\[Prisfil.xlsm]priser'!A:J;10;FALSK)=0;"Låst";"Åben"));"FEJL")
- C-kolonnen kan have værdien "K" eller "O", hvis den er K skal der stå "--" i D.
- Den returnerede værdi fra LOPSLAG'et kan være 0 eller 1, er den 0 skal der stå "Låst" i D og ellers "Åben".

Er kommet frem til at der er to muligheder, da det i sig selv er "umuligt" at lave et direkte opslag over i en lukket fil fra VBA, her er de:
- Man kan via VBA åbne filen, lave LOPSLAG'et og så lukke filen igen.
- Man kan alternativt via VBA indsætte formlen i D-kolonnen.

Jeg har prøvet begge dele og vil nu gerne indsætte formlen i D-kolonnen via VBA - men jeg kan simpelthen ikke få det til at virke.
Koden kommer til at ligge i et For Each loop, der arbejder sig igennem en lang række ID'er i A-kolonnen.

Indtil videre har jeg lavet følgende, der ikke virker (Error 400):
Range("D" & cr).Formula = "=HVIS.FEJL(HVIS(C" & cr & "=""K"";""--"";HVIS(LOPSLAG(A" & cr & ";'C:\Whatever\[Prisfil.xlsm]priser'!A:J;10;FALSK)=0;""Låst"";""Åben""));""FEJL"")"
Her er cr en variabel, der angiver den nuværende rækkes nummer: "D" & cr = D1, D2, D3, osv efterhånden som løkken kører.
Har prøvet med enkelt plinger ('), enkelt dobbelt plinger ("), samme resultat/lignende errors.

Jeg arbejder i Excel 2016 på dansk.

Mvh Nikolaj.
Avatar billede Nikolaj_IP Juniormester
27. juni 2017 - 15:33 #1
Har fået den til indsætte det (næsten) rigtigt ved at fjerne = fra formlen:
"HVIS.FEJL(..." I stedet for "=HVIS.FEJL(..."
Desværre ser den det jo så som tekst og ikke en formel i selve Excel arket. Hvordan løser man det?

Mvh Nikolaj.
Avatar billede store-morten Ekspert
27. juni 2017 - 15:52 #2
Prøv at tilføje: Local, fordig du skriver formlen på dansk.

Range("D" & cr).FormulaLocal ............
Avatar billede Nikolaj_IP Juniormester
28. juni 2017 - 08:14 #3
Hej store-morten,

Mange tak for dit svar, det lader til at det var det.
Arbejder med en række større Excel filer, hvor Excel er på dansk - nogle andre steder i VBA jeg skal være opmærksom på noget tilsvarende/en tilsvarende inkompatibilitet mellem dansk/engelsk?

Mvh Nikolaj.
Avatar billede store-morten Ekspert
28. juni 2017 - 10:52 #4
Din makro vil kun virke i en dansk version af Excel, når du bruger:

Range("D" & cr).FormulaLocal = "=HVIS.FEJL(HVIS(C" & cr & "=""K"";""--"";HVIS(LOPSLAG(A" & cr & ";'C:\Whatever\[Prisfil.xlsm]priser'!A:J;10;FALSK)=0;""Låst"";""Åben""));""FEJL"")"

Ellers skal du oversætte din formel til engelsk, så kan du bruge:

Range("D" & cr).Formula = "=IFERROR(IF(C" & cr & "=""K"",""--"",IF(VLOOKUP(A1,'C:\Whatever\[Prisfil.xlsm]priser'!A:J,10,FALSE)=0,""Låst"",""Åben"")),""FEJL"")"
Avatar billede Nikolaj_IP Juniormester
29. juni 2017 - 08:40 #5
Okay, så hvis jeg skriver formlen på engelsk i VBA, burde det ikke være nødvendigt med FormulaLocal / så kan jeg "nøjes" med Formula?
Og formlen kommer stadig til at virke på trods af at mit Excel er sat til dansk?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester