Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1648to1652
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Application.Caller.Workbook als Objekt in AddIn

Application.Caller.Workbook als Objekt in AddIn
10.10.2018 19:41:01
Andreas
Moin zusammen,
ich möchte ein AddIn schreiben, dass Apparate nach der europäischen Druckgeräterichtlinie anhand von Druck, Volumen, inneres Medium etc. in die richtige Kategorie einteilt. Dazu möchte ich in einer beliebigen *.xlsm, die das AddIn immer aufruft folgenden Code ausführen:
Sub DGRL_Einstufung_aufrufen()
Application.Run ("AddIn_DGRL_Einstufung.xlam!FUNKTION_DGRL_Einstufung")
End Sub
...Soweit funktioniert es, ich starte die Funktion "FUNKTION_DGRL_Einstufung", die noch keine Eingabeparameter besitzt in dem AddIn.
In dem AddIn möchte ich Code haben, der ungefähr so aussieht:
Function FUNKTION_DGRL_Einstufung()
Set xlbook_AUSF = Application.Caller.Workbook
End Function
...weil ich die Werte aus Zellen mit Namen wie "Druck", die in dem ausführenden Workbook enthalten sind, mit
-------------------------------------------------------------------
Druck = xlbook_AUSF.Names("Druck").RefersToRange.Value
-------------------------------------------------------------------
...weiterverwenden möchte
Die Zeile...
-------------------------------------------------------------------
Set xlbook_AUSF = Application.Caller.Workbook
-------------------------------------------------------------------
...in dem AddIn wirft den Fehler "Objekt erforderlich" auf.
Mit Objekten habe ich immer meine Probleme und kriege einfach nicht raus, wie der richtige Befehl lautet.
Vielleicht ist das, was ich möchte, ja auch gar nicht möglich.
Wie immer für jede Hilfe dankbar!

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Application.Caller.Workbook als Objekt in AddIn
10.10.2018 20:02:18
onur
Schon das probiert?
Set xlbook_AUSF = ThisWorbook

AW: Application.Caller.Workbook als Objekt in AddIn
10.10.2018 20:15:58
onur
Noch besser:
Set xlbook_AUSF = ActiveWorkbook
Onurs Korrektur nennt das richtige Objekt, ...
10.10.2018 23:48:11
Luc:-?
…Andreas,
denn Application.Caller liefert nur dann ein Objekt, wenn der Call aus einer Zelle, nämlich genau diese (dann wäre allerdings Application.ThisCell besser), also aus einer Fkt in einer Fml heraus erfolgt. Anderenfalls wird höchstens ein Text (ObjektName) oder gar ein FehlerWert zurückgegeben. Würde ersterer Fall zutreffen, könnte man höchstens mit .Parent.Parent arbeiten, aber das dürfte viel zu umständlich sein, da es ja dafür ActiveWorkbook gibt. Dagegen liefert die Verwendung von ThisWorkbook in einem AddIn stets das AddIn selbst. Es muss nun nur noch sicher­gestellt sein, dass das ActiveWorkbook auch das richtige ist…
🙈 🙉 🙊 🐵 Gruß, Luc :-?
„Die Intelligenzmenge ist auf diesem Planeten eine Konstante, die Bevölkerung nimmt aber zu!“ Auch deshalb informieren mit …
Anzeige
AW: Onurs Korrektur nennt das richtige Objekt, ...
11.10.2018 15:19:31
Andreas
Moin Onur, moin Luc,
danke für Eure Antworten.
Thisworkbook liefert immer das Addin selbst, genau.
Acitveworkbook funktioniert aber ich trau dem immer nicht 100%, weil ich oft 5 oder mehr Excelworkbooks gleichzeitig geöffnet habe und ich den Eindruck habe, dass der "Cursor" oder "Zeiger" oder wie man es auch nennen mag, der bestimmt, welches Workbook gerade "active" ist, auch mal auf ein falsches Workbook zeigt.
Ich belasse es jetzt bei Activeworkbook, denn
Set xlbook_AUSF = ActiveWorkbook
passiet ja ganz am Anfang und die Zuweisung des Objekts sollte sich ja nicht ändern, wenn der Code ausgeführt wird, egal, auf welche Arbeitsmappe der "Zeiger" im Codeverlauf auch zeigen mag.
Luc, manches in Deiner Antwort verstehe ich nicht so ganz, z.B. das, was sich darauf bezieht, von wo man etwas "called"; Mit "Fml" meinst du eine Formel in einer Zelle, oder? Also dass ich =FUNKTION_DGRL_Einstufung [evtl. noch mit Eingabeparametern] in einer Zelle nutze?
Das hätte ja den Vorteil, dass die Nutzer keinen Knopf drücken, sondern dass die Einstufung immer sofort erfolgen würde. Das wäre sogar besser. Während der Einstufung werden auf dem Weg zum Endergebnis noch Zwischenergebnisse produziert, kann ich die mit "Unterfunktionen" oder ähnlichem in andere Zellen ausgeben?
Was du wohl mit Parent.Parent meinst ist folgende Lösung, die ich gerade ausprobiert habe, die auch funktioniert aber auch auf dem "active"-Prinzip basiert (Jetzt bin ich drauf gekommen mit Googles Hilfe aber vor diesem Post noch nicht):
Set xlbook_AUSF = ActiveSheet.Shapes(Application.Caller).Parent.Parent
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige