Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  Excel
  benutzerdefinierte Funktion

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
Autor Thema:  benutzerdefinierte Funktion (9694 mal gelesen)
SebZ
Mitglied
Bauingenieur Tiefbau


Sehen Sie sich das Profil von SebZ an!   Senden Sie eine Private Message an SebZ  Schreiben Sie einen Gästebucheintrag für SebZ

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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


Sehen Sie sich das Profil von Paulchen an!   Senden Sie eine Private Message an Paulchen  Schreiben Sie einen Gästebucheintrag für Paulchen

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für SebZ 10 Unities + Antwort hilfreich

Hallo SebZ,
aus Zeitmangel nur kurz - guck mal die links in diesem Beitrag an...
Frederik

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

runkelruebe
Moderator
Straßen- / Tiefbau




Sehen Sie sich das Profil von runkelruebe an!   Senden Sie eine Private Message an runkelruebe  Schreiben Sie einen Gästebucheintrag für runkelruebe

Beiträge: 8075
Registriert: 09.03.2006

MS-Office 365 ProPlus x86
WIN7(x64)

erstellt am: 31. Okt. 2006 11:56    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für SebZ 10 Unities + Antwort hilfreich

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


Sehen Sie sich das Profil von Paulchen an!   Senden Sie eine Private Message an Paulchen  Schreiben Sie einen Gästebucheintrag für Paulchen

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für SebZ 10 Unities + Antwort hilfreich

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 Modul
Code:
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ß,
Frederik

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

runkelruebe
Moderator
Straßen- / Tiefbau




Sehen Sie sich das Profil von runkelruebe an!   Senden Sie eine Private Message an runkelruebe  Schreiben Sie einen Gästebucheintrag für runkelruebe

Beiträge: 8075
Registriert: 09.03.2006

MS-Office 365 ProPlus x86
WIN7(x64)

erstellt am: 31. Okt. 2006 12:16    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für SebZ 10 Unities + Antwort hilfreich

@Frederik: Top! Damit zerfransel ich mir auch die PERSONL nicht so arg 

------------------
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

SebZ
Mitglied
Bauingenieur Tiefbau


Sehen Sie sich das Profil von SebZ an!   Senden Sie eine Private Message an SebZ  Schreiben Sie einen Gästebucheintrag für SebZ

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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


Sehen Sie sich das Profil von Paulchen an!   Senden Sie eine Private Message an Paulchen  Schreiben Sie einen Gästebucheintrag für Paulchen

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für SebZ 10 Unities + Antwort hilfreich

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?...
IMHOIn my humble oppinion (Meiner Meinung nach) 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


Sehen Sie sich das Profil von SebZ an!   Senden Sie eine Private Message an SebZ  Schreiben Sie einen Gästebucheintrag für SebZ

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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


Sehen Sie sich das Profil von Paulchen an!   Senden Sie eine Private Message an Paulchen  Schreiben Sie einen Gästebucheintrag für Paulchen

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für SebZ 10 Unities + Antwort hilfreich

Hallo SebZ,
ein noch kleinerer Nachtrag: Warum muß es denn ausgerechnet die persönliche Mappe sein? Wäre "Diese Mappe" als Vorlage auch ´ne Option?
Noch mehr Fragen...
Frederik

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

SebZ
Mitglied
Bauingenieur Tiefbau


Sehen Sie sich das Profil von SebZ an!   Senden Sie eine Private Message an SebZ  Schreiben Sie einen Gästebucheintrag für SebZ

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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


Sehen Sie sich das Profil von Paulchen an!   Senden Sie eine Private Message an Paulchen  Schreiben Sie einen Gästebucheintrag für Paulchen

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für SebZ 10 Unities + Antwort hilfreich

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




Sehen Sie sich das Profil von runkelruebe an!   Senden Sie eine Private Message an runkelruebe  Schreiben Sie einen Gästebucheintrag für runkelruebe

Beiträge: 8075
Registriert: 09.03.2006

MS-Office 365 ProPlus x86
WIN7(x64)

erstellt am: 31. Okt. 2006 19:45    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für SebZ 10 Unities + Antwort hilfreich

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 ツ




Sehen Sie sich das Profil von Thomas Harmening an!   Senden Sie eine Private Message an Thomas Harmening  Schreiben Sie einen Gästebucheintrag für Thomas Harmening

Beiträge: 2897
Registriert: 06.07.2001

Das Innerste geäussert
und aufs Äusserste verinnerlicht

erstellt am: 31. Okt. 2006 22:09    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für SebZ 10 Unities + Antwort hilfreich

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


Sehen Sie sich das Profil von SebZ an!   Senden Sie eine Private Message an SebZ  Schreiben Sie einen Gästebucheintrag für SebZ

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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


Sehen Sie sich das Profil von Paulchen an!   Senden Sie eine Private Message an Paulchen  Schreiben Sie einen Gästebucheintrag für Paulchen

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für SebZ 10 Unities + Antwort hilfreich

'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


Sehen Sie sich das Profil von Paulchen an!   Senden Sie eine Private Message an Paulchen  Schreiben Sie einen Gästebucheintrag für Paulchen

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für SebZ 10 Unities + Antwort hilfreich

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 ツ




Sehen Sie sich das Profil von Thomas Harmening an!   Senden Sie eine Private Message an Thomas Harmening  Schreiben Sie einen Gästebucheintrag für Thomas Harmening

Beiträge: 2897
Registriert: 06.07.2001

Das Innerste geäussert
und aufs Äusserste verinnerlicht

erstellt am: 02. Nov. 2006 00:26    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für SebZ 10 Unities + Antwort hilfreich

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


Sehen Sie sich das Profil von Paulchen an!   Senden Sie eine Private Message an Paulchen  Schreiben Sie einen Gästebucheintrag für Paulchen

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für SebZ 10 Unities + Antwort hilfreich

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


Sehen Sie sich das Profil von Nepumuk an!   Senden Sie eine Private Message an Nepumuk  Schreiben Sie einen Gästebucheintrag für Nepumuk

Beiträge: 351
Registriert: 16.10.2004

erstellt am: 02. Nov. 2006 15:28    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für SebZ 10 Unities + Antwort hilfreich

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


Sehen Sie sich das Profil von Paulchen an!   Senden Sie eine Private Message an Paulchen  Schreiben Sie einen Gästebucheintrag für Paulchen

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für SebZ 10 Unities + Antwort hilfreich

Hallo Nepumuk,

was bitte ist API??? OK, ich lasse die Finger davon:-) Danke für den Tip und die Warnung!

Frederik

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

SebZ
Mitglied
Bauingenieur Tiefbau


Sehen Sie sich das Profil von SebZ an!   Senden Sie eine Private Message an SebZ  Schreiben Sie einen Gästebucheintrag für SebZ

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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


Sehen Sie sich das Profil von giman an!   Senden Sie eine Private Message an giman  Schreiben Sie einen Gästebucheintrag für giman

Beiträge: 217
Registriert: 19.06.2005

erstellt am: 12. Jan. 2007 17:44    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für SebZ 10 Unities + Antwort hilfreich

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


Sehen Sie sich das Profil von SebZ an!   Senden Sie eine Private Message an SebZ  Schreiben Sie einen Gästebucheintrag für SebZ

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

...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".

IMHOIn my humble oppinion (Meiner Meinung nach) 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 >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz