Avatar billede H_Klein Novice
15. januar 2014 - 19:32 Der er 8 kommentarer og
1 løsning

Hvorfor er der forskel på måden man laver formler og hvordan ser man forskellen?

Hejsa,

Jeg har fusket lidt med det her VBA og er stødt på (endnu) en ting som jeg ikke helt kan forstå og som jeg håber på at der er én herinde der kan hjælpe med at forklare for mig...

I nedenstående eksempel står der i celle A1 "AB" og jeg har aktiveret celle B1.

Her er der nu to muligheder for at skrive en formel for at få fat i bogstavet "A", altså en =VENSTRE - formel.

Hvis jeg bruger den besværlige metode og optager makroen ser den ud som følger: ActiveCell.FormulaR1C1 = "=LEFT(RC[-1],1)"

Hvis jeg derimod skriver den selv kan jeg nøjes med at skrive: Cells(1, 2) = Left(Cells(1, 1), 1) og få nøjagtigt samme resultat.

Mit spørgsmål er, hvorfor kan man ikke gøre det med alle funktionerne(formlerne) og hvordan ser man hvor det er muligt og hvor det ikke er muligt?

Et eksempel er =LOPSLAG der ved optagelse i makro-optageren hedder VLOOKUP men hvis jeg forsøger at skrive den i hånden efter ovenstående opskrift, får jeg at vide at funktionen ikke er en gyldig function?

Håber I kan hjælpe mig med at forstå forskellen på disse to formler og, for den sags skyld, de andre formler da der sikkert er flere der vil lave de samme numre med mig...


Med venlig hilsen

Henrik.
Avatar billede kabbak Professor
15. januar 2014 - 19:49 #1
Public Sub test()
ActiveCell.FormulaLocal = "=venstre(A1;1)"
End Sub
Avatar billede kabbak Professor
15. januar 2014 - 19:53 #2
Når man bruger FormulaLocal, skriver men det på samme måde som du gør i arket.

Men du kan ikke bruge koden på en engelsk udgave, kun dansk.
Avatar billede store-morten Ekspert
15. januar 2014 - 21:38 #3
ActiveCell.Formula = "=VLOOKUP(G1,E1:F3,2,FALSE)"
Avatar billede store-morten Ekspert
15. januar 2014 - 22:02 #4
Eller
ActiveCell.FormulaLocal = "=LOPSLAG(G1;E1:F3;2;FALSK)"
Avatar billede H_Klein Novice
16. januar 2014 - 00:20 #5
Hej begge to og tusinde tak for hurtige svar :-)

Jeg er dog nødt til at komme med et tillægs-spørgsmål til eksemplet på Lopslagét.

hvis der nu er tale om to forskellige ark, hvordan skal koden så skrives?

Jeg har forsøgt med forskellige muligheder, men kan ikke få det til at hænge sammen.

derudover har jeg også den "lille" udfordring at de løsninger I viser, ikke giver mulighed for at lægge det ind som loop, da cellerne, som jeg ser det, er låst på placeringerne. Derfor mit ønske om at kunne arbejde med en "cells" da jeg så kan lave en variabel f. eks. RK og lægge den med ind i koden så kabbak´s eksempel f. eks. ville hedde ActiveCell.FormulaLocal = "=venstre(cells(rk,1);1)" og man ville i et loop kunne bruge koden rk=rk+1 for at vælge næste række i tabellen.

Håber at ovenstående giver mening,,,


Med venlig hilsen

Henrik
Avatar billede H_Klein Novice
16. januar 2014 - 01:20 #6
Jeg har nu løst den med at hente data fra et andet ark, men mangler stadig at finde ud af hvordan jeg kan arbejde med variabler i denne type af formler...


Med venlig hilsen

Henrik
Avatar billede kabbak Professor
16. januar 2014 - 07:12 #7
ActiveCell.FormulaLocal = "=venstre(A" & ActiveCell.Row-1 & ";1)"
Avatar billede H_Klein Novice
16. januar 2014 - 18:24 #8
Hej begge to,

Kan I ikke begge to smide et svar, så jeg kan give jer point?

Jeg har måske nok ikke fået helt den løsning jeg håbede på, men den jeg har fået fungerer og I har begge kæmpet for sagen så det skal I naturligvis have både point og tak for.


Med venlig hilsen

Henrik
Avatar billede kabbak Professor
16. januar 2014 - 18:57 #9
;-))
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