Avatar billede aadal Nybegynder
15. december 2010 - 10:50 Der er 8 kommentarer og
1 løsning

VBA funktion virker ikke men macro gør hvorfor?

Jeg skal bruge en Function i Excel så jeg kan retunere en(flere) værdi til mit ark, det er til optælling af mails i en mailbox med initialer.
Inbox'en er importeret via MS query og ligger i sheet(1)/("Inbox")
Koden der virker i en sub macro1 ser således ud:
[code]
Debug.Print "HaWoow!"

    ActiveWorkbook.Sheets(1).Select
    Range("Table_Query_from_W_PRS_Mail_in_1[[#Headers],[_70]]").Select
    Range(Selection, Selection.End(xlDown)).Select
    Set DatesRng = Selection
   
    Range("Table_Query_from_W_PRS_Mail_in_1[[#Headers],[_73]]").Select
    Range(Selection, Selection.End(xlDown)).Select
    Set SubjectRng = Selection


dtoday = Now

count = 1

Debug.Print "HaWoow!"
[/code]
Koden virker som sagt fint som sub men når den kommer i function så kommer den ikke videre end det første "hawoow!" men melder ikke debug fejl :-( Det skal siges jeg skal bruge funktionen i et andet sheet. Når jeg indsætter funktionen i Inbox sheet siger den cirkluær refference.
Jeg håber der er nogen der kan hjælpe er ved at blive tosset hehe

Jeg ved denne ligger mellem Excel/Programmering men jeg postede den i Excel
Avatar billede jkrons Professor
16. december 2010 - 15:33 #1
Problemet ligger nok i, at en Function ikke kan selecte.

Denne linie vil derfor gå galt:
ActiveWorkbook.Sheets(1).Select
Avatar billede aadal Nybegynder
17. december 2010 - 12:48 #2
Tak, den havde jeg ikke lige fanget :-)
Måske lidt basic men hvordan henviser jeg så til en range på et andet sheet i en fuction? nogen forslag? eller den query?

Jeg har overvejet at fyre en SQL af pr funktions kald men der er ca 18 x 10, og jeg syntes ikke den ODBC driver jeg bruger er så stabil(Notes ODBC) så jeg ville egentlig helst holde det til så lidt kald som muligt.
Avatar billede jkrons Professor
17. december 2010 - 15:56 #3
Måske noget i denne stil: Ikke testet:

Set DatesRng = Range("Table_Query_from_W_PRS_Mail_in_1[[#Headers],[_70]]:Table_Query_from_W_PRS_Mail_in_1[[#Headers],[_70]]").End(xlDown)
Avatar billede aadal Nybegynder
17. december 2010 - 19:00 #4
takker mange gange, jeg tjekker det lige mandag :D så er der points
Avatar billede jkrons Professor
17. december 2010 - 22:33 #5
Prøv det lige først. Som sagt har jeg ikke selv testet. Altewrnativ kan du lave et range argumenet i din funcktion, så du starter med at markere det relevante område.
Avatar billede aadal Nybegynder
20. december 2010 - 09:35 #6
Det virker næsten, jeg får desværre kun sidste felt med.
Grunden til at jeg ikke tager range med er at det gerne skulle være dynamisk, men hvis man kan fange en range med noget ala funktion(A4:A4.End(xlDown);B4:B4) Kan jeg da godt bruge det :-)
Avatar billede aadal Nybegynder
20. december 2010 - 10:27 #7
Got it! :D
[code]
Set DatesRng = Range(Range("Table_Query_from_W_PRS_Mail_in_1[[#Headers],[_70]]"), Range("Table_Query_from_W_PRS_Mail_in_1[[#Headers],[_70]]").End(xlDown))
[/code]
Den sku læige deles op :D mange tak for at lede mig på den rigtige vej
Avatar billede aadal Nybegynder
20. december 2010 - 10:47 #8
Hvis du skriver et svar vil jeg give points
Avatar billede jkrons Professor
20. december 2010 - 16:57 #9
Velbekomme.
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
Kategori
Vi har et stort udvalg af Excel kurser. Find lige det kursus der passer dig lige her.

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