Autor
|
Thema: benutzerdefinierte Funktion (9694 mal gelesen)
|
SebZ Mitglied Bauingenieur Tiefbau
Beiträge: 189 Registriert: 17.10.2004 AutoCAD 2010 Civil 3D DACH WinXP Professional 2002 SP3 MS Office 2007 Intel Core2Duo 2.80 GHz, 3.00 GB RAM
|
erstellt am: 31. Okt. 2006 10:45 <-- editieren / zitieren --> Unities abgeben:
Hallo, vor längerer Zeit hab ich mal eine benutzerdefinierte Funktion (ganz winzig als Beispiel) erstellt, die ich dann aus einer Excel-Zelle mit der Formel =VOL2(A24;B24;C24) aufrufen konnte (zumindest erinnere ich mich dunkel daran, dass das klappte):
Code:
Public Function VOL2(L1, L2, L3) As Double VOL2 = L1 * L2 * L3 End Function
Leider wird jetzt immer nur #NAME? erzeugt. Die Funktion ist in einem Makro definiert, das stets zur Verfügung steht. Alle anderen dort vereinbarten Prozeduren kann ich problemlos aufrufen. Was hab ich vergessen bzw. falsch gemacht?------------------ Gruß SebZ Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Paulchen Mitglied Bauing./SW-Entwickler
Beiträge: 1227 Registriert: 19.08.2004 Büro: Win10 Enterprise 64bit, Office Professional Plus 2013 - Privat: Linux Mint 15, LibreOffice
|
erstellt am: 31. Okt. 2006 11:50 <-- editieren / zitieren --> Unities abgeben: Nur für SebZ
|
runkelruebe Moderator Straßen- / Tiefbau
Beiträge: 8075 Registriert: 09.03.2006 MS-Office 365 ProPlus x86 WIN7(x64)
|
erstellt am: 31. Okt. 2006 11:56 <-- editieren / zitieren --> Unities abgeben: Nur für SebZ
Hi, nach kurzem Test komme ich zu dem Ergebnis, daß die Function nur läuft, wenn sie im gleichen Projekt deklariert ist. Eine Festlegung in der PERSONL.XLS reicht bei mir auch nicht, obwohl sie Public ist. Erklären kann ich das aber leider nicht. Eine Möglichkeit, es trotzdem aufrufen zu können: die Mappe, in der die Function deklariert wird: [edit2] Danke Frederik, das Wichtigste fehlte
Code: Private Sub Workbook_Open() ThisWorkbook.IsAddin = True End Sub
[/edit2] Zitat: Hinweise Wenn Sie diese Eigenschaft auf True setzen, besitzt die Arbeitsmappe folgende Kennzeichen:Sie werden nicht aufgefordert, die Arbeitsmappe zu speichern, falls Änderungen vorgenommen werden, während die Arbeitsmappe geöffnet ist. Das Arbeitsmappenfenster ist nicht sichtbar. Eventuell in der Arbeitsmappe enthaltene Makros werden im Makro-Dialogfeld nicht dargestellt (das Dialogfeld wird angezeigt, wenn Sie auf Makro im Extras-Menü zeigen und auf Makros klicken). Makros der Arbeitsmappe können, obwohl sie nicht dargestellt werden, über das Makro-Dialogfeld ausgeführt werden. Außerdem müssen Makronamen nicht mit dem Namen der Arbeitsmappe qualifiziert werden. Wenn Sie beim Öffnen der Arbeitsmappe die UMSCHALTTASTE gedrückt halten, hat dies keine Wirkung.
wie gesagt, wirklich erkären kann ich das Ganze jetzt nicht, aber vielleicht hilft Dir das ja schon ein wenig weiter. Sollte diese Vorgehensweise irgendwie bedenklich sein, bitte ich um Hinweise! [edit] Nachtrag: das soll auch irgendwie mit Application.Run gehen, bekomme ich aber Syntaxmäßig nicht auf die Kette... [/edit] ------------------ Gruß, Nicole Herr Kann-ich-nich wohnt in der Will-ich-nich-Straße... [Diese Nachricht wurde von runkelruebe am 31. Okt. 2006 editiert.] [Diese Nachricht wurde von runkelruebe am 31. Okt. 2006 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Paulchen Mitglied Bauing./SW-Entwickler
Beiträge: 1227 Registriert: 19.08.2004 Büro: Win10 Enterprise 64bit, Office Professional Plus 2013 - Privat: Linux Mint 15, LibreOffice
|
erstellt am: 31. Okt. 2006 12:08 <-- editieren / zitieren --> Unities abgeben: Nur für SebZ
Hallo Nicole, hallo SebZ, ich meine, es ging darum, die benutzerdefinierte Funktion wieder zum laufen zu bringen - ich kann nicht die Finger davon lassen:-) Folgendes im VBA-Editor - Diese Arbeitsmappe (der Teil fehlte wohl bei Dir): Code: Private Sub Workbook_Open() Application.MacroOptions Macro:="VOL2", Description:="Berechnet Volumen" End Sub
und dann in einem beliebigen ModulCode: Public Function VOL2(L1, L2, L3) As Double VOL2 = L1 * L2 * L3 End Function
Danach xls schließen und die Mappe wieder öffnen. Sollte dann unter den Funktionen bei "Benutzerdefiniert" auftauchen. Kann man tricksen - siehe links in obigem Beitrag... Kurz, nicht ganz sauber und ausführlich erklärt, dafür schmerzlos und hoffentlich hilfreich. Gruß, FrederikEine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
runkelruebe Moderator Straßen- / Tiefbau
Beiträge: 8075 Registriert: 09.03.2006 MS-Office 365 ProPlus x86 WIN7(x64)
|
erstellt am: 31. Okt. 2006 12:16 <-- editieren / zitieren --> Unities abgeben: Nur für SebZ
|
SebZ Mitglied Bauingenieur Tiefbau
Beiträge: 189 Registriert: 17.10.2004 AutoCAD 2010 Civil 3D DACH WinXP Professional 2002 SP3 MS Office 2007 Intel Core2Duo 2.80 GHz, 3.00 GB RAM
|
erstellt am: 31. Okt. 2006 13:12 <-- editieren / zitieren --> Unities abgeben:
Hallo Nicole, hallo Frederik, danke für eure Hilfe. Ich habe jetzt folgendes gemacht (jeweils Excel beendet + neu gestartet): a) habe die VOL2 in PERSONL.XLS belassen wie bisher. Resultat: Die Funktion ist nur verfügbar, wenn ich sie mit =PERSONL.XLS!VOL2(x;y;z) aufrufe, aber erscheint - wie einige andere Testfunktionen auch - als "PERSONL.XLS!VOL2" in der Liste "Benutzerdefiniert" (wo kommen all die anderen Funktionen her, die dort ebenfalls aufgelistet sind??) b) habe die Funktion als VOL3 in ein neues Modul meiner aktuellen Projekt-Arbeitsmappe verschoben. Resultat: VOL3 ist verfügbar, aber nur in dieser Arbeitsmappe (keine Überraschung). c) habe in PERSONL.XLS eingetragen:
Code: Private Sub Workbook_Open() ThisWorkbook.IsAddin = True End Sub
Resultat: Die in den Makros von PERSONL.XLS enthaltenen (Test-)Funktionen sind jetzt alle ansprechbar, ohne dass "PERSONL.XLS!" vorangestellt werden muss. Sie sind jetzt auch ohne dieses Präfix in der Liste "Benutzerdefiniert" enthalten. Die in PERSONL.XLS enthaltenen Makros werden jetzt wie oben beschrieben allerdings auch nicht mehr in der Makroliste angezeigt.d) habe den Eintrag Code: Private Sub Workbook_Open() ThisWorkbook.IsAddin = True End Sub
in PERSONL.XLS wieder gelöscht. Resultat: Die Makros erscheinen trotzdem nicht wieder in der Liste, VOL2 wird zwar unter "Benutzerdefiniert" aufgelistet, die Eingabehilfe wird geöffnet, aber kein Formelergebnis berechnet (#NAME?). Andere Funktionen aus dem gleichen Modul funktionieren aber.Es gibt also noch Denkstoff. Habe heute aber leider keine Zeit mehr, mich weiter drum zu kümmern, werde in den nächsten Tagen weitermachen. Vielleicht sammelt sich noch der ein oder andere Tip an inzwischen. Euch für heute erst mal vielen Dank!!
------------------ Gruß SebZ Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Paulchen Mitglied Bauing./SW-Entwickler
Beiträge: 1227 Registriert: 19.08.2004 Büro: Win10 Enterprise 64bit, Office Professional Plus 2013 - Privat: Linux Mint 15, LibreOffice
|
erstellt am: 31. Okt. 2006 16:29 <-- editieren / zitieren --> Unities abgeben: Nur für SebZ
Hallo SebZ, na, das nenne ich mal ein feedback - so soll es sein! Zitat: ...wo kommen all die anderen Funktionen her, die dort ebenfalls aufgelistet sind?...
IMHO ist diese Liste bei einem "jungfräulichen" xls leer - lasse mich gerne belehren -, d.h., da muß schon mal jemand (DU?) UDFs gebastelt haben. Ansonsten finde ich Punkt a) völlig OK. zu b) Übereinstimmung meinerseits zu c) Habe keine Ahnung von AddIns - scheint aber wohl an eben diesen zu liegen, was wo wie warum wann wem angezeigt wird:-) Zitat: ...werden jetzt wie oben beschrieben allerdings auch nicht mehr in der Makroliste angezeigt...
Nachfrage: Welche Liste - in xls oder in VBA? Wo genau? zu d)Ich vermute (!!!), daß die Sache mit der Initialisierung (siehe mein voriger Beitrag) in der aktuellen Mappe unter "Diese Arbeitsmappe" zur Verfügung stehen muß? Wo sind denn die anderen Funktionen definiert bzw. wo werden sie initialisiert? Können die auch in der pers. Mappe stehen (Ich weiß es wirklich nicht, ist also eine Frage an Dich )? Gegenfragen über Gegenfragen... Das wird schon! (Hoffentlich) Motivierender Gruß, Frederik
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
SebZ Mitglied Bauingenieur Tiefbau
Beiträge: 189 Registriert: 17.10.2004 AutoCAD 2010 Civil 3D DACH WinXP Professional 2002 SP3 MS Office 2007 Intel Core2Duo 2.80 GHz, 3.00 GB RAM
|
erstellt am: 31. Okt. 2006 16:30 <-- editieren / zitieren --> Unities abgeben:
noch ein kleiner Nachtrag: die Eigenschaft als AddIn von PERSONL.XLS lässt sich rücksetzen, wenn man "Personl.xls">"Diese Arbeitsmappe" im VBA-Editor markiert und mit F4 das Eigenschaftsfenster öffnet. Darin den Eintrag "IsAddin" auf FALSE setzen.
------------------ Gruß SebZ Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Paulchen Mitglied Bauing./SW-Entwickler
Beiträge: 1227 Registriert: 19.08.2004 Büro: Win10 Enterprise 64bit, Office Professional Plus 2013 - Privat: Linux Mint 15, LibreOffice
|
erstellt am: 31. Okt. 2006 16:38 <-- editieren / zitieren --> Unities abgeben: Nur für SebZ
|
SebZ Mitglied Bauingenieur Tiefbau
Beiträge: 189 Registriert: 17.10.2004 AutoCAD 2010 Civil 3D DACH WinXP Professional 2002 SP3 MS Office 2007 Intel Core2Duo 2.80 GHz, 3.00 GB RAM
|
erstellt am: 31. Okt. 2006 17:00 <-- editieren / zitieren --> Unities abgeben:
Hallo Frederik, mir gehts vor allem darum, meine Funktionen stets für alle Excel-Mappen gleichermaßen verfügbar zu haben, und zwar solche, die ich selber im Idealfall aus einer Vorlage erstelle als auch importierte und von externen Anwendungen automatisch erzeugte Arbeitsmappen. So viel ich weiß, geht das nur mit Personl.xls; zumindest habe ich damit eine Datei, in der zentral alle meine eigenen Tools und Ergänzungen drin sind. Oder wie sähe dein Vorschlag aus?
------------------ Gruß SebZ Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Paulchen Mitglied Bauing./SW-Entwickler
Beiträge: 1227 Registriert: 19.08.2004 Büro: Win10 Enterprise 64bit, Office Professional Plus 2013 - Privat: Linux Mint 15, LibreOffice
|
erstellt am: 31. Okt. 2006 17:42 <-- editieren / zitieren --> Unities abgeben: Nur für SebZ
Hallo SebZ, schau nochmal hier - enlish page - funcostumize.dll download. Lade Dir das Teil mal runter und installiere es. Ist etwas aufwändiger, auf französisch bzw. englisch gehalten, dafür aber meines Erachtens halbwegs clever gelöst. Funktionsmenge ist irgendwie begrenzt (weiß nicht auswendig, wie viele), und der Kerle hat ´ne eigene dll erstellt - sehr abgefahren. Und es kann Deinen eigenen Funktionen eine Beschreibung für die Parameter mitgeben! Tolle Sache, Nachteil: Aufwand. Läuft dann als AddIn. Da ich das "Tool" noch nicht bis ins kleinste Detail nachvollzogen habe , folgende Empfehlung: Schau es Dir einfach an - ob und wie Du es dann verwendest, liegt natürlich bei Dir. Zu der Sache mit der pers. xls muß ich Dich leider an die anderen Mitglieder verweisen - da fehlt mir die eigene Erfahrung, Vermutungen sind hier wohl fehl am Platze. Mach Dich ran und stelle Dein Wissen dann hier rein, würde mich freuen! Frohes Schaffen wünscht Frederik [Edit]P.S.: Frage an alle - was passiert, wenn ich mir in xls unter Extras->Optionen->Allgemein einen "zusätzlichen Startordner" festlege und da eine/mehrere Datei(en) reinpacke? [/Edit] [Diese Nachricht wurde von Paulchen am 31. Okt. 2006 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
runkelruebe Moderator Straßen- / Tiefbau
Beiträge: 8075 Registriert: 09.03.2006 MS-Office 365 ProPlus x86 WIN7(x64)
|
erstellt am: 31. Okt. 2006 19:45 <-- editieren / zitieren --> Unities abgeben: Nur für SebZ
was ist eigentlich aus Frederiks Vorschlag geworden? Code: Application.MacroOptions Macro:="VOL2", Description:="Berechnet Volumen"....usw.
der funktioniert doch und macht fast keinen Aufwand! alternativer Vorschlag: im Pfad C:\Dokumente und Einstellungen\username\Anwendungsdaten\Microsoft\Excel\XLSTART habe ich einfach noch eine xlDatei gespeichert und siehe da: sie wird ebenfalls geöffnet beim excel-Start (die Überraschung hielt sich in Grenzen ) Wenn ich jetzt dieser extra-mappe die Eigenschaft isAddin zuteile (wie schon oben erkannt: im Projektexplorer über Eigenschaften) und die Function in ein Modul einfüge, speichere, Excel schließe, dabei die nochmalige Frage auf Speichern bestätige, dann wird die Datei beim nächsten Excel-Start zwar nicht sichtlich geöffnet (keine Tabelle und kein Task zu sehen, wie in der Hilfe ja angedroht), steht aber in ihrem ganzen von uns gewünschten Umfang zur Verfügung und kann vom VBA-Projektexplorer aus weiterhin bearbeitet werden. Damit haben wir also einen eigenen Container für all unsere benutzerdefinierten Funktionen geschaffen, falls wir denn nicht direkt die personl dafür nehmen wollen. Das Ganze geht bestimmt auch viel einfacher und sorgt grade für Erheiterung bei den Experten, aber so für den Anfang...
------------------ Gruß, Nicole Herr Kann-ich-nich wohnt in der Will-ich-nich-Straße... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Thomas Harmening Moderator Arbeiter ツ
Beiträge: 2897 Registriert: 06.07.2001 Das Innerste geäussert und aufs Äusserste verinnerlicht
|
erstellt am: 31. Okt. 2006 22:09 <-- editieren / zitieren --> Unities abgeben: Nur für SebZ
ich verändere nichts an der Personl.xls... wozu auch? ich will ja nicht den ganzen Ballast immer mitladen Entweder ich habe meine Excelmappen, in denen eh der individuellen Code drinnen steht. oder ich erstelle mir ein AddIn und setze das Häkchen (oki, ist auch Ballast mitladen :-) Finde ich insgesamt 'sauberer' Stimmt irgendwas mit Xl nicht (noch nie passiert), so kann man die AddIns schnell deaktivieren und muss nicht erst in der Personl.xls herumdoktoren. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
SebZ Mitglied Bauingenieur Tiefbau
Beiträge: 189 Registriert: 17.10.2004 AutoCAD 2010 Civil 3D DACH WinXP Professional 2002 SP3 MS Office 2007 Intel Core2Duo 2.80 GHz, 3.00 GB RAM
|
erstellt am: 01. Nov. 2006 09:13 <-- editieren / zitieren --> Unities abgeben:
Gebt mir ein paar Tage - jetzt werde ich erst mal die Informationen verarbeiten. Da ich das immmer neben der "eigentlichen" Arbeit an den Tabellen mache, habe ich leider immer nur situationsbedingt Zeit dafür. Aber am Ende lockt hoffentlich wieder etwas mehr Erleichterung der Arbeit. Der Eintrag
Code: Private Sub Workbook_Open() Application.MacroOptions Macro:="VOL2", Description:="Berechnet Volumen" End Sub
erzeugt einen beschreibenden Text, wenn man die Funktion über den Button "Funktion einfügen" sucht. Die benutzerdefinierten haben sonst immer nur den Hinweis "Drücken Sie die Schaltfläche für Hilfe..." Ich habe nicht festgestellt, dass die Funktion damit ohne Datei-Präfix unmittelbar zur Verfügung steht. ------------------ Gruß SebZ Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Paulchen Mitglied Bauing./SW-Entwickler
Beiträge: 1227 Registriert: 19.08.2004 Büro: Win10 Enterprise 64bit, Office Professional Plus 2013 - Privat: Linux Mint 15, LibreOffice
|
erstellt am: 01. Nov. 2006 19:51 <-- editieren / zitieren --> Unities abgeben: Nur für SebZ
'n Abend! Zunächst mal zu den drei vorhergehenden Beiträgen... Nicoles Vorschläge muß ich mir mal in aller Ruhe ansehen. Erfreulich ist, das die Mappe nicht sichtbar geöffnet wird. Der Ansatz von Thomas ist ebenfalls gut, da bleibt die Sache u.U. übersichtlicher und die PERSÖNL.xls "sauber(er)". Zu SebZ: Zitat: Ich habe nicht festgestellt, dass die Funktion damit ohne Datei-Präfix unmittelbar zur Verfügung steht
Wie - es steht dann (immer?) in der Funktion "Mappe3726!VOL2" bei "Funktion einfügen"??? Hatte ich noch nie! Naja, nimm Dir Zeit und berichte Die Sache mit der UDF lässt sich noch wesentlich weiter ausbauen. Wenn Du in der sub "Workbook_Open" den Text entsprechend ergänzt, kannst Du sogar eine eigene Hilfedatei dazubasteln (Da sollte die Hilfe zu "MacroOptions" hilfreich sein). Irgendwann ist dann aber Schluss mit den Bordmitteln. So kannst Du zwar der Funktion eine Beschreibung mitgeben; die Parameter - also hier z.B. Länge, Breite, Höhe - lassen sich "einfach so" leider nicht weiter beschreiben bzw. hilfreich erklären :-( Deshalb der leichte Umweg über xcell05 - link in meinem vorherigen Beitrag. Mehr Einsatz = mehr Komfort. Ach so, SebZ, da sind immer noch ein paar unbeantwortete (Gegen-)Fragen - siehe weiter oben. Bitte, bitte nicht völlig vergessen... Gruß, Frederik Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Paulchen Mitglied Bauing./SW-Entwickler
Beiträge: 1227 Registriert: 19.08.2004 Büro: Win10 Enterprise 64bit, Office Professional Plus 2013 - Privat: Linux Mint 15, LibreOffice
|
erstellt am: 01. Nov. 2006 23:11 <-- editieren / zitieren --> Unities abgeben: Nur für SebZ
Nochmals guten Abend, ich habe die Variante mit xlstart - isAddin usw. von Nicole halbwegs nachvollzogen. An sich eine feine Sache, es funktioniert wie oben beschrieben. Nur taucht bei mir (Office2k auf xp) ein klitzekleines Problemchen auf. Zum Verständnis: Die Mappe im Ordner xlstart heißt "extra-Mappe"; in ihr ist die Funktion definiert. Die aktuell zur "normalen" Bearbeitung geöffnete Mappe heißt einfach nur "Mappe". Wenn ich meine Mappe schließe, ist alles gut. Änderungen speichern usw., völlig normal und wie gewohnt. Wenn ich jedoch xls beende, so erscheint die neugierige Frage, ob ich denn Änderungen in der extra-Mappe auch speichern möchte; scheinbar taucht die Meldung auch dann auf, wenn ich in der extra-Mappe gar nichts verändert habe. Schlußfolgerungen: 1. Ich könnte damit leben, diese Meldung (jedesmal) mit Ja/Nein zu beantworten. 2. Einem User ist sowas eigentlich nicht zuzumuten - unsauber. Kann jemand diese Meldung bestätigen (Nicole)? Liegt es an meiner Version? Wäre es evtl. möglich, diese Wollen-Sie-speichern-Meldung elegant "abzufangen"? Es ist ja toll, wenn man - sofern unbedingt nötig - eigene Funktionen einbauen kann. Wenn ich allerdings eine *.dll zur Beschreibung brauche, deren Pfad festgelegt ist; oder bei jedem, der damit arbeiten will, im xlstart-Ordner rumbasteln oder diese Meldung umständlich unterbinden muß - mit der Gefahr auf die Speicherung von "Fehlern" natürlich - stellt sich schließlich doch die Frage: MACHT ES SINN? So weit, so gut; jedenfalls ´ne schöne Spielerei! Die Version von Thomas (xls - Speichern unter - addin, schließen, beliebige Datei öffnen, Extras->AddIn-Manager, Häkchen) gefällt mir wesentlich besser:-) Auch wenn ich hier beim Öffnen ´nen Laufzeitfehler bekomme ("Kann nicht in einer ausgeblendeten Mappe ausführen...") - lässt sich nach einem "On error resume next" in "Diese Arbeitsmappe" des AddIns umgehen - ist die Häkchen-Sache doch ganz nett. Weitere Kommentare/Meinungen?! [Edit] Ich habe hier noch was zum Thema gefunden... [/Edit] Frederik [Diese Nachricht wurde von Paulchen am 01. Nov. 2006 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Thomas Harmening Moderator Arbeiter ツ
Beiträge: 2897 Registriert: 06.07.2001 Das Innerste geäussert und aufs Äusserste verinnerlicht
|
erstellt am: 02. Nov. 2006 00:26 <-- editieren / zitieren --> Unities abgeben: Nur für SebZ
hmmm, habe zwar selber noch nie ein AddIn erstellt aber Code: Function VOL2(L1, L2, L3) As Double VOL2 = L1 * L2 * L3 End Function
alle Sheets bis auf 1 gelöscht -um das ein oder andere Byte zu sparen - als AddIn gespeichert, erzeugt keine Fehlermeldung, wenn es als AddIn eingebunden wird. - oder hast du das mit einem anderen, eigenen code ausprobiert? und das Addin lässt sich, auch wenn dazugeladen, in der VBA-Umgebung editieren und speichen und mit einem PW versehen *naja, kein wirklicher Hindernis* - aber wenn ONA (OttoNormalAnwender) darin nichts verbiegen soll, ausreichend.Da ich nicht mit einer Personl.xls arbeite, kann man das auch oder muss man die Personl.xls explizit öffnen um Änderungen vorzunehmen? ne, ich probiere das jetzt nicht aus - man muss ja nicht immer das Rad zweimal nachbauen :-) [Diese Nachricht wurde von Thomas Harmening am 02. Nov. 2006 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Paulchen Mitglied Bauing./SW-Entwickler
Beiträge: 1227 Registriert: 19.08.2004 Büro: Win10 Enterprise 64bit, Office Professional Plus 2013 - Privat: Linux Mint 15, LibreOffice
|
erstellt am: 02. Nov. 2006 14:38 <-- editieren / zitieren --> Unities abgeben: Nur für SebZ
Hallo Thomas, die Fehlermeldung basierte nicht auf der Funktion selbst, sondern auf diesem: Zitat: Da ich nicht mit einer Personl.xls arbeite, kann man das auch oder muss man die Personl.xls expliziert öffnen um Änderungen vorzunehmen?
Sollte genauso gehen. Die persönliche taucht ja auch im VBA-Editor auf, folglich kann man sie ebenfalls bearbeiten. Passwortschutz ist immer so ´ne Sache ... Interessant wäre noch, ob die Beschreibung, die der Macro-Recorder aufzeichnet, auch im Funktions-Assistenten auftaucht. Jedenfalls kann man - jetzt wird´s unsicher - irgendwo im VBA-Editor auch diese Beschreibung bearbeiten (rechte Maus im Eigenschaften-Übersichtsfenster auf Eigenschaften [der Funktion] oder so?!); allerdings wieder mal nur die Funktion, nicht die Parameter. Funktion darf - nebenbei bemerkt - nicht private sein, sonst taucht sie im Fun-Assi nicht auf. Hoffe, hinreichend zu Deiner Verwirrung beigetragen zu haben ?! Hast recht, EIN eckiges Rad reicht auch. Gruß, Frederik [Diese Nachricht wurde von Paulchen am 02. Nov. 2006 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Nepumuk Mitglied Entwicklungsleiter
Beiträge: 351 Registriert: 16.10.2004
|
erstellt am: 02. Nov. 2006 15:28 <-- editieren / zitieren --> Unities abgeben: Nur für SebZ
Hallo Frederik, es gibt eine Möglichkeit die Parameter einer benutzerdefinierten Funktion zu benennen, so dass diese auch im Funktionsassi auftauchen. Dazu brauchst du aber ein bisschen Erfahrung mit API-Funktionen. Wenn du die nicht hast, dann lass besser die Finger davon, denn im güstigen Fall fliegt dir nur Excel um die Ohren. ------------------ Gruß Nepumuk Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Paulchen Mitglied Bauing./SW-Entwickler
Beiträge: 1227 Registriert: 19.08.2004 Büro: Win10 Enterprise 64bit, Office Professional Plus 2013 - Privat: Linux Mint 15, LibreOffice
|
erstellt am: 03. Nov. 2006 11:15 <-- editieren / zitieren --> Unities abgeben: Nur für SebZ
|
SebZ Mitglied Bauingenieur Tiefbau
Beiträge: 189 Registriert: 17.10.2004 AutoCAD 2010 Civil 3D DACH WinXP Professional 2002 SP3 MS Office 2007 Intel Core2Duo 2.80 GHz, 3.00 GB RAM
|
erstellt am: 10. Jan. 2007 15:59 <-- editieren / zitieren --> Unities abgeben:
Hallo, und allen an dieser Stelle noch ein erfolgreiches Jahr 2007! am Datum meines letzten Postings habe ich gemerkt, dass seitdem etwas mehr als nur "ein paar Tage" vergangen sind. Ich hab mir die Dateien besorgt und auch installiert, aber seitdem hatte ich dann leider keine weitere Gelegenheit, die Thematik zu vertiefen. Aber die nächste Excel-intensive Zeit kommt bestimmt, und dann auch eine entsprechende Rückmeldung. Das wollte ich nur mal schnell loswerden...
------------------ Gruß SebZ Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
giman Mitglied Konstrukteur, Rohrleitungsbau und Rentner
Beiträge: 217 Registriert: 19.06.2005
|
erstellt am: 12. Jan. 2007 17:44 <-- editieren / zitieren --> Unities abgeben: Nur für SebZ
Hallo alle ich hatte mir auch mal im EXCEL-Startordner eine eigene Makrodatei angelegt, aber nach einem halben Jahr bin ich wieder davon abgekommen. Da ich auf mehrere Rechner zu gange bin, habe ich doch lieber die PERSONL.XLS genutzt und darin spezielle Container eingerichtet. Das läßt sich besser beherrschen und man hat nur eine Datei, die man im Bedarfsfall kopieren muß. Das Einrichten von weiteren "PERSONL.XLS"-Dateien würde ich nur für ganz spezielle Anwendungen vorschlagen. Aber besser ist es dann bestimmt den nächsten Schritt zu machen und die Makros gleich in eine DLL zu kompilieren. Auf dem Weg bin ich jetzt jedenfalls. (Und das ebenfalls nur nach dem Feierabend, wenn es die Zeit zuläßt.) Gruß giman Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
SebZ Mitglied Bauingenieur Tiefbau
Beiträge: 189 Registriert: 17.10.2004 AutoCAD 2010 Civil 3D DACH WinXP Professional 2002 SP3 MS Office 2007 Intel Core2Duo 2.80 GHz, 3.00 GB RAM
|
erstellt am: 16. Jan. 2008 15:51 <-- editieren / zitieren --> Unities abgeben:
...und als ein Jahr vergangen, .... immerhin bin ich noch ein paar Antworten und Kommentare schuldig, die ich nach Phasen mit mehr oder weniger Beschäftigung mit dem Thema wie folgt zusammenfasse: FunCustomize.dll scheint zwar eine prima Sache zu sein, aber unter Excel97 kann man leider nix anpassen. Ich hatte da anfangs etwas mit rumgedoktort, aber dann eher ins Museum für ausgabeunwillige Geschäftsführer gelegt. Meine UDFs habe ich jetzt alle in einer separaten Arbeitsmappe (*.xla), die als Add-In vereinbart ist. Bereits genannter Vorteil: Änderungen werden automatisch beim Verlassen von Excel gespeichert, es wird kein eigenes Arbeitsfenster geöffnet, und sie muss nicht im Startverzeichnis stehen, wenn ich sie im Add-In-Manager markiert habe. Bei den Tools ist jetzt aber zu unterscheiden: a) will ich von Excel aus ein Makro ausführen (Extras>Makro>Makros...), werden in der dort aufgerufenen Liste nur die SUBs aufgeführt, die entweder in PERSONL.XLS oder in der aktuellen Arbeitsmappe enthalten sind. b) will ich von Excel aus eine selbstdefinierte Tabellenfunktion verwenden, ist der aufschlussreichste Weg, in der Bearbeitungszeile den "="Button aufzurufen und dann links im Pull-Down-Fenster den Listeneintrag "weitere Funktionen..." zu wählen. Dort sind unter "benutzerdefiniert" (ganz unten) alle gültigen Funktionen abrufbar. Dass in dieser Auflistung noch viel mehr Funktionen enthalten sind als ich selbst in aktueller Arbeitsmappe, Funktions-AddIn und PERSONL.XLS implementiert habe, liegt an einigen anderen AddIns wie Automatisches Speichern etc. c) Funktionen und Makros (=Subs) der aktuellen Arbeitsmappe und von AddIns haben weder in der (Excel-)Auflistung der verfügbaren Makros noch der verfügbaren Funktionen keine Voranstellung des Arbeitsmappennamens, während Funcs und Subs aller übrigen Arbeitsmappen - also auch PERSONL.XLS - immer den Mappennamen vorneweg haben. d) die weiter oben beschriebene Verfahrensweise
Code: Private Sub Workbook_Open() ThisWorkbook.IsAddin = True End Sub
verwende ich nicht, sondern setze stattdessen den Haken im VBA-Eigenschaftenfenster unter "Diese Arbeitsmappe">Is AddIn = "True".IMHO ist das etwas günstiger, weil die Mappe bereits im Augenblick des Ladens ein AddIn ist und nicht erst einen Bruchteil später dazu umdefiniert wird. Das scheint sich auch auf das Initialisieren der Datei und des enthaltenen VBA-Codes auzuwirken, aber hier vermute ich nur. Mir ist übrigens auch nicht klar, ob Excel mit der Dateiendung XLA wirklich was anfängt, oder obs nur der besseren Unterscheidbarkeit für den fehlbaren Endbenutzer dient. Und um zu meiner alleranfänglichen Frage zurückzukommen: Damals war mir einfach entgangen, dass ich die Funktion irgendwohin geschrieben habe, bloß nicht in eine der in diesem Thread ausgiebig erörterten sinnvollen Möglichkeiten. Grundsätzlich gilt: sollen Funcs und Subs am eigenen Arbeitsplatz dauerhaft verfügbar sein, dann empfiehlt sich die Verwendung eines AddIns, sollen Dateien auch woanders laufen, dann sollten die Tools in der jeweiligen Mappe gespeichert werden. Der Empfänger muss dann ggf. die Makrosicherheitsabfrage bestätigen. ... war der Kuckuck wieder da. Ich denke, für meinen Teil alle noch offenen Punkte damit abgehakt zu haben. ------------------ Gruß SebZ Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|