webForumDet fria alternativet

Excel AddIn + Event

6 svar · 802 visningar · startad av P

PMedlem sedan jan. 20012 204 inlägg
#1

Tja!
Har skrivit ett AddIn till Excel(2003) där jag använder mig av WorkBook_SheetCalculate. (sparade bara filen som .xla)
Problemet är inga funktioner och events körs i ThisWorkBook i .xla filen, däremot i den excel-filen som jag lägger till AddIn:et till.

Någon som har tips på hur man kommer runt detta och får funktioner att köras i ThisWorkBook i .xla filen? Kanske blanda in Application?

lecxeMedlem sedan okt. 200750 inlägg
#2

Av nyfikenhet, vad vill du ska göras i .xlafilen? Normalt gör man ju ett tillägg för att överföra den funktionalitet man har skrivit i tillägget till andra excelfiler. Jag tycker det låter konstigt om du vill trigga på calculate i tillägget. Har du tänkt dig att tillägget ska innehålla värden i de olika bladen? Du har säkert motiv till varför du vill göra på ett visst sätt. Kan du förklara lite mer så ska jag försöka hjälpa dig?

PMedlem sedan jan. 20012 204 inlägg
#3

Ja jag har en funktion som jag anropar från ett excel-ark. " =MinFunktion(...)" som ansluter till en databas och hämtar rejält med data (20 000) rader.
Dessa vill jag skriva ut i ett excel-blad. Problemet när jag anropar "=MinFunktion(...)" är att den inte får ändra i excel-bladet, inget jag vill ha men i Excel är det tydligen så.

Så då sätter jag all data i en variabel som jag sedan hämtar in i Calculate eventet(detta körs ju precis efter funktionen). När det eventet körs så får man ändra i hela bladet.

Det kanske finns något annat sätt att komma runt problemet med att den inte får ändra i Excelbladet?

Jag vill ha en .xla så jag kan använda koden i olika Excelprojekt.

lecxeMedlem sedan okt. 200750 inlägg
#4

Hej!
Som jag har förstått det så vill du att hämtade data ska skrivas till xla-filen och inte till den den arbetsbok du jobbar i? I stället för att anropa " =MinFunktion(...)" så kan du skriva en kod som placerar funktionen i xla-filen. En sån kod kan se ut så här:

Sub test()
Dim r As Range
Set r = Workbooks("Mitt_Tillagg.xla").Worksheets("blad1").Range("a1")
r.Formula = "=MinFunktion(...)"
End Sub

Då borde eventet triggas i xla-filen och utföra det som står där.

Du kan inte (mig veterligen) skriva till andra celler än den som innehåller funktionen, från en funktion, utan det måste göras med en subrutin.

/lecxe

PMedlem sedan jan. 20012 204 inlägg
#5

lecxe skrev:

Hej!
Du kan inte (mig veterligen) skriva till andra celler än den som innehåller funktionen, från en funktion, utan det måste göras med en subrutin.

/lecxe

Vad menar du med en subrutin?

lecxeMedlem sedan okt. 200750 inlägg
#6

Alltså procedur, makro, ... Koden i mitt förra inlägg är en subrutin, dvs det står sub test() överst.

PMedlem sedan jan. 20012 204 inlägg
#7

http://www.xtremevbtalk.com/showthread.php?p=441712#post441712

Den tråden löste problemet.

379 ms totalt · 3 externa anrop · v20260731065814-full.3ab8d573
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
376 ms — hämta tråd, inlägg och bilagor (db)