Avatar billede sjogren Novice
21. januar 2002 - 13:45 Der er 7 kommentarer og
1 løsning

VBA-Match (Sammenlign)

Kan det være rigtigt, at MATCH-funktionen ikke virker i VBA?

Jeg har i selve regnearket oprettet et Range med flg. egenskaber:

=FORSKYDNING(ref_celle_afkast;SAMMENLIGN(Startdato;Filterdata)+1;0;(SAMMENLIGN(Slutdato;Filterdata))-(SAMMENLIGN(Startdato;Filterdata)+1);1)

og det virker smukt, men jeg har så prøvet af skrive flg. kode i VBA:

Public Sub DynRangeAfkast()
\' Test af dynamisk grafrange
DynRangeAfkast = Offset(Range(\"ref_celle_afkast\"), Match(Range(\"Startdato\"), _
Range(\"Filterdata\") + 1, 0, (Match(Range(\"Slutdato\"), Range(\"Filterdata\"))) - (Match( _
Range(\"Startdato\"), Range(\"Filterdata\")) + 1), 1))
End Sub

MEN der opstår en kompileringfejl - Sub- eller Funktionsprocedure er ikke defineret

Er der nogle \"Hajer\" derude som kan hjælpe?
Avatar billede rvm Nybegynder
21. januar 2002 - 14:04 #1
Du må ikke bruge navnet på din makro i selv makroen. Det må du kun når du laver en funktion. Det er derfor din kode fejler (som start) -jeg har ikke undersøgt noget med MATCH *S*
Avatar billede askims Nybegynder
21. januar 2002 - 14:15 #2
For at være sikker på, at du oversætter dem korrekt, vil det være en god ide, at optage en makro, hvor du skriver denne \"lille\" formel.

ASKIMS
Avatar billede bak Seniormester
21. januar 2002 - 15:37 #3
match virker fint, Sjøgren.
Men du skal skrive
Application.WorkSheetfunction.match()
Avatar billede bak Seniormester
21. januar 2002 - 15:45 #4
Altså noget i retning af:
\' Test af dynamisk grafrange
Set DynRangeAfkastOmr = range(Offset(Range(\"ref_celle_afkast\"), Application.WorkSheetFunction.Match(Range(\"Startdato\"), _
Range(\"Filterdata\") + 1, 0, (Application.WorkSheetFunction.Match(Range(\"Slutdato\"), Range(\"Filterdata\"))) - (Application.WorkSheetFunction.Match( _
Range(\"Startdato\"), Range(\"Filterdata\")) + 1), 1)))
Avatar billede sjogren Novice
21. januar 2002 - 17:04 #5
Det virke sgu stadigvæk ikke!

kan det have noget at gøre med, at jeg dimentionerer flg. variable således:

Public Sub DynRangeAfkast()
\' Test af dynamisk grafrange
Dim Startdato As Double
Dim slutdato As Double
Dim Filterdata As Double

Set DynRangeAfkastOmr = Range(Offset(Range(\"ref_celle_afkast\"), Application.WorksheetFunction.Match(Range(\"Startdato\"), _
Range(\"Filterdata\") + 1, 0, (Application.WorksheetFunction.Match(Range(\"Slutdato\"), Range(\"Filterdata\"))) - (Application.WorksheetFunction.Match( _
Range(\"Startdato\"), Range(\"Filterdata\")) + 1), 1)))
End Sub

Fejlmeddelse: Compile error: wrong number of arguments or invalid property assignment

VBA markerer den første ...function.Match i koden
Avatar billede bak Seniormester
21. januar 2002 - 17:51 #6
Som jeg umiddelbart kan se det mangler der en slutparantes i 1. match
Avatar billede bak Seniormester
21. januar 2002 - 17:52 #7
lige efter +1,0
Avatar billede sjogren Novice
25. januar 2002 - 16:25 #8
Hej bak

Tak for din store hjælp, nu virker det smukt :-)
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