Egen Excel funktion - problem

Elektronik- och mekanikrelaterad mjukvara/litteratur. (T.ex schema-CAD, simulering, böcker, manualer mm. OS-problem hör inte hit!)
Användarvisningsbild
Icecap
Inlägg: 26610
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Egen Excel funktion - problem

Inlägg av Icecap »

Jag har skrivit några funktioner som är sparat i "Electronic.xlam" och som tillägsfunktioner.
Det betyder att när jag startar Excel hämtas de funktioner i den filen in som standard.

Den första funktion är:
Public Function STD_E6(inputvalue As Double) As Double
Dim STD_E6 As Double
STD_E6 = 10 ^ (Int(Log10(inputvalue))) * Choose(Round((Log10(inputvalue) Mod 1) * 6, 0), 1, 1.5, 2.2, 3.3, 4.7, 6.8, 10)
End Function

Orsaken till "STD_E6" istället för "E6" har med referens att göra.

När jag startar Excel (Win 10, Office 365 företag) och går till VBA finns funktionerna där.

Men står jag i det vanliga räkna-ark och vill ett fält (A1) med ett värde i, sedan ett fält (A2) som tar input från A1 och kör genom "STD_E6" för att visas i A2 (A2 = "=STD_E6(A1)") står det "#NAMN?" i A2.

Skriver jag "=Electronic.STD_E6(A1)" i A2 blir det samma "#NAMN?".

Vad gör jag fel?

VBA har ingen felmarkeringar av koden.
Nerre
Inlägg: 27131
Blev medlem: 19 maj 2008, 07:51:04
Ort: Upplands väsby

Re: Egen Excel funktion - problem

Inlägg av Nerre »

Om du har funktionen in en annan arbetsbok (d.v.s. en annan Excel-fil) än där funktionen ligger måste du prefixa med arbetsbokens namn:
To use a custom function, the workbook containing the module in which you created the function must be open. If that workbook is not open, you get a #NAME? error when you try to use the function. If you reference the function in a different workbook, you must precede the function name with the name of the workbook in which the function resides. For example, if you create a function called DISCOUNT in a workbook called Personal.xlsb and you call that function from another workbook, you must type =personal.xlsb!discount(), not simply =discount().
Från den här sidan:
https://support.microsoft.com/en-us/off ... 748ae8231f
Användarvisningsbild
Icecap
Inlägg: 26610
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Re: Egen Excel funktion - problem

Inlägg av Icecap »

I.o.m. att jag redan HAR funktionerna klar när jag öppnar ett nytt ark i Excel anser jag att de finns redo.

Om jag startar Excel, går till "Utvecklare", klickar på kugghjulet (i DK "Excel-Tilføjelsesprogrammer") o ser i listen som kommer FINNS "Electronic" i listan o är ibockad.

Öppnar jag VBA finns funktionerna i det nyss öppnade ark.

Funktionerna finns INTE i ett specifikt ark, de finns som funktioner i ALLA ark jag öppnar.

När jag testade att kalla funktionen med filnamn gick inte det heller då Electronic.xlam ju INTE är en arbetsbok.

Jag hittade en guide på hur jag skulle addera funktionerna generellt i Excel, gjorde detta - men fan om det fungerar.
Palle500
Inlägg: 4901
Blev medlem: 6 juni 2015, 14:53:06
Ort: Strängnäs

Re: Egen Excel funktion - problem

Inlägg av Palle500 »

Behöver du inte aktivera macro körning (spara som .xlsm) för att vba koden skall kunna köras?
Användarvisningsbild
Icecap
Inlägg: 26610
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Re: Egen Excel funktion - problem

Inlägg av Icecap »

Det är ju inte macron men funktioner. Och när jag startar med ett nytt blankt ark FINNS dessa funktioner med. De är ju lagda under tilläggsfunktioner och ska då vara där alltid.
Nerre
Inlägg: 27131
Blev medlem: 19 maj 2008, 07:51:04
Ort: Upplands väsby

Re: Egen Excel funktion - problem

Inlägg av Nerre »

Har du provat att prefixa med arbetsbokens namn som supportsidan hos Microsoft säger?

Att de syns när du öppnar VBA är inte samma sak som att de finns i samma arbetsbok. De måste såvitt jag förstått ligga i rätt "project" i projekthanteraren till vänster. Där hittar du alla projekt i alla öppna arbetsböcker, men det betyder inte att du hänvisa till dem från ett kalkylblad utan prefix. (Det är nog t.o.m. en säkerhetsrisk, nån skulle kunna skapa en Excel-fil som "kapar" en annan funktion.)
Användarvisningsbild
Icecap
Inlägg: 26610
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Re: Egen Excel funktion - problem

Inlägg av Icecap »

Såklart har jag prefixat men med .xlam som endelse = No can do.

Jag har infogad funktionerna efter de instruktioner som finns från M$.
Palle500
Inlägg: 4901
Blev medlem: 6 juni 2015, 14:53:06
Ort: Strängnäs

Re: Egen Excel funktion - problem

Inlägg av Palle500 »

VBA kod klassas som ”macro” du får inte köra VBA i ett vanligt excelark.
Har du provat att spara som makroaktiverat och sen öppna och testa din funktion?
Palle500
Inlägg: 4901
Blev medlem: 6 juni 2015, 14:53:06
Ort: Strängnäs

Re: Egen Excel funktion - problem

Inlägg av Palle500 »

Du har rätt man behöver inte aktivera "Makron" för att få in egna funktioner i vanliga Excelark *.xlsx.
Jag testade att göra som du säger och det fungerar utmärkt.
Det jag även gjorde var att aktivera min Test_VB_Functions_01.xlam som ett Excel tillägg.
sen finns funktionen OnlyDigits("1234Oskar23A") tillgänglig i alla Excelark. Nej! Se nedan hur man gör!

Om jag har lagt till funktionen i ett Excelark och inaktiverar tillägget "Test_VB_Functions_01" , ja då ändras formeln till att innehålla hela sökvägen till *.xlam filen:
='C:\Users\larsp\AppData\Roaming\Microsoft\AddIns\Test_VB_Functions_01.xlam'!OnlyDigits("1234")
och nästa gång jag öppnar Excelarket så varnas det för länkar till externa källor!

Har du lagt till dina funktioner i Excel?
EDIT
Man måste aktiver tillägget för varje nytt Excelark
Aktiver egna tillägg.jpg

EDIT #2
Man måste lägga till path där Test_VB_Functions_01.xlam är sparad som betrodd path.
Betrodda sökvägar.jpg
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Palle500
Inlägg: 4901
Blev medlem: 6 juni 2015, 14:53:06
Ort: Strängnäs

Re: Egen Excel funktion - problem

Inlägg av Palle500 »

Nyfiken, fick du det att fungera?
Användarvisningsbild
Icecap
Inlägg: 26610
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Re: Egen Excel funktion - problem

Inlägg av Icecap »

Jag har gjort allt detta - men nej, funkar inte.

Har haft en period med en hel del överbelastning så det har fått vila.

Samma projekt ska skrivas lite om och läggas in i LibreOffice Calc - men idag fick jag veta att min operation blir förstkommande onsdag 8:00 så det räcker just nu.
Användarvisningsbild
MadModder
Co Admin
Inlägg: 31120
Blev medlem: 6 september 2003, 13:32:07
Ort: MadLand (Enköping)
Kontakt:

Re: Egen Excel funktion - problem

Inlägg av MadModder »

Nu har jag VBA från 2007 så den skriker bara om att det inte går att definiera double flera gånger på det där viset, och har dessutom inte en LOG10-funktion.

Men jag gjorde en enkel funktion såhär efter att ha följt instruktionerna här: https://support.microsoft.com/en-us/off ... 748ae8231f

Kod: Markera allt

Function rabatt(quantity, price)
   If quantity >= 100 Then
     rabatt = quantity * price * 0.1
   Else
     rabatt = 0
   End If
 
 rabatt = Application.Round(rabatt, 2)
End Function
Det finns ingen round i mitt vba, så den får hämtas från excels bibliotek.

Iaf, jag tryckte Alt+F11 och infogade en ny modul med denna kod i.
Sen provade jag att den funkade i aktuellt kalkylblad.
Sparade arbetsboken som rabatt.xlam.
Sen gick jag till Arkiv (office-knappen), sen excel-alternativ, och sen tillägg, och sen längst ner hantera excel-tillägg, och ok.
Där fanns redan "rabatt" med, så den bockade jag i och sen ok.
Sen stängde jag ner Excel helt.

Sen öppnade jag Excel igen, och skrev in funktionen i det tomma kalkylbladet utan att göra något annat, och det fungerade utan problem.
Tillägget är aktiverat av sig självt varje gång jag öppnar excel.
excel.jpg
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Palle500
Inlägg: 4901
Blev medlem: 6 juni 2015, 14:53:06
Ort: Strängnäs

Egen Excel funktion - problem

Inlägg av Palle500 »

Excel är konstigt!
Provade nu att skapa ett nytt ark och då finns funktionen där på direkten. Behövde inte lägga till den i tillägg som tidigare.
Kör office 2021 på W11.
Öppnar jag vba fönstret via meny "utvecklare" så är även excelfilen med vba koden åtkomlig med min funktion OnlyDigits()
MadModder du behövde inte lägga till att path:en var betrodd?
Excel VBA funktion.jpg
Edit
Lite intressant att jag kan lägga till nya funktioner enligt ovan som då även finns tillgängliga i ny/andra excelark. Blir ju jättesmidigt tills man skickar det till någon annan som då behöver min xlam fil :-(
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Användarvisningsbild
MadModder
Co Admin
Inlägg: 31120
Blev medlem: 6 september 2003, 13:32:07
Ort: MadLand (Enköping)
Kontakt:

Re: Egen Excel funktion - problem

Inlägg av MadModder »

Ja det där funkar ju inte så smidigt att dela med sig av.

Och nej, jag har inte behövt lägga till några sökvägar.
Sparade bara i standardmappen som den väljer själv, den där under appdata osv.
Palle500
Inlägg: 4901
Blev medlem: 6 juni 2015, 14:53:06
Ort: Strängnäs

Re: Egen Excel funktion - problem

Inlägg av Palle500 »

mina problem i början var nog relaterade till att hela msOffice behövde starta om efter att jag lagt till path:en och det kräver nog kall boot.
MadModder kan ju vara skillnad mellan versionerna ju nyare ju mera krångel och höjda säkerhetsnivåer.
Skriv svar