Autor
|
Thema: VBA: Hyperlink zu Prozedur (3281 mal gelesen)
|
Lutz Federbusch Ehrenmitglied V.I.P. h.c. Dipl.-Ing. Maschinenbau
Beiträge: 3093 Registriert: 03.12.2001 alle SW seit 97+ AutoCAD2000 ERP ProAlpha + CA-Link Intel Core i7 860 16GB Win7x64 QuadroFX1800 SpacePilot
|
erstellt am: 21. Jan. 2008 11:20 <-- editieren / zitieren --> Unities abgeben:
Hallo Excelfreunde! Ich möchte gern über einen Hyperlink eine Prozedur in meinem Code anspringen. Zu Zellen, externen Dateien oder in eine E-Mail springen ist mir schon gelungen, aber das nicht. Gibt es da eine bestimmte Schreibweise dafür? Das geht doch bestimmt! Oder muß ich mit dem Hyperlink eine Makrodatei starten, die den gewünschten Code ausführt?! ------------------ Lutz Federbusch Mein Gästebuch Der Mensch, Herr oder Sklave der Technik? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Nepumuk Mitglied Entwicklungsleiter
Beiträge: 351 Registriert: 16.10.2004
|
erstellt am: 21. Jan. 2008 12:32 <-- editieren / zitieren --> Unities abgeben: Nur für Lutz Federbusch
|
Lutz Federbusch Ehrenmitglied V.I.P. h.c. Dipl.-Ing. Maschinenbau
Beiträge: 3093 Registriert: 03.12.2001 alle SW seit 97+ AutoCAD2000 ERP ProAlpha + CA-Link Intel Core i7 860 16GB Win7x64 QuadroFX1800 SpacePilot
|
erstellt am: 21. Jan. 2008 13:17 <-- editieren / zitieren --> Unities abgeben:
Hallo Nepumuk! Also diese Funktionalität kannte ich auch noch nicht! Jetzt springt es mir durch Betätigung des Hyperlinks in den Code der gewünschten Prozedur, so daß ich den Quelltext sehe. Diese sollte aber ausgeführt werden Hab ich vielleicht nicht genau gesagt ------------------ Lutz Federbusch Mein Gästebuch Der Mensch, Herr oder Sklave der Technik? [Diese Nachricht wurde von Lutz Federbusch am 21. Jan. 2008 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: 21. Jan. 2008 13:27 <-- editieren / zitieren --> Unities abgeben: Nur für Lutz Federbusch
|
Lutz Federbusch Ehrenmitglied V.I.P. h.c. Dipl.-Ing. Maschinenbau
Beiträge: 3093 Registriert: 03.12.2001 alle SW seit 97+ AutoCAD2000 ERP ProAlpha + CA-Link Intel Core i7 860 16GB Win7x64 QuadroFX1800 SpacePilot
|
erstellt am: 21. Jan. 2008 13:31 <-- editieren / zitieren --> Unities abgeben:
Erstmal Danke! Das Blatt und die Hyperlinks drauf erstelle ich erst mitten im Makro. Na gut, erstelle ich eben statt der Hyperlinks mal (mehrere) Befehlsknöpfe, mal sehen, ob die dann alle die gleiche Prozedur in ihrer aktuellen Zeile ausführen wollen... ------------------ Lutz Federbusch Mein Gästebuch Der Mensch, Herr oder Sklave der Technik? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Lutz Federbusch Ehrenmitglied V.I.P. h.c. Dipl.-Ing. Maschinenbau
Beiträge: 3093 Registriert: 03.12.2001
|
erstellt am: 21. Jan. 2008 16:16 <-- editieren / zitieren --> Unities abgeben:
Das klappt so leider nicht; die Knöpfe werden zwar erstellt, aber sie haben noch keinen Code hinterlegt und ich weiß nicht, wie ich ihnen einen Unterschieben kann. Sie sollen eigentlich alle nur dieselbe Routine ausführen, wenn sie angeklickt werden. Für die Zeilennummer habe ich eine mitlaufende Variable, sodaß ich die Routine in der richtigen Zeile dann ausführen könnte. Ideen? Das Anspringen einer Zelle mittels Hyperlink würde ja auch gehen - könnte ich einer Zelle sagen, daß sie, wenn ausgewählt/angesprungen, eine Routine ausführt?! ------------------ Lutz Federbusch Mein Gästebuch Der Mensch, Herr oder Sklave der Technik? 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: 21. Jan. 2008 16:35 <-- editieren / zitieren --> Unities abgeben: Nur für Lutz Federbusch
|
Lutz Federbusch Ehrenmitglied V.I.P. h.c. Dipl.-Ing. Maschinenbau
Beiträge: 3093 Registriert: 03.12.2001
|
erstellt am: 22. Jan. 2008 09:16 <-- editieren / zitieren --> Unities abgeben:
Naja, die Zelle ändert sich ja nicht. Der Anwender soll eben in jeder Zeile einen Hyperlink/Befehlsknopf haben und nur wenn er den anklickt, sollen auf einem anderen Blatt Angaben hinzugefügt werden, von welcher Zeile er da etwas angeklickt hatte. Es erstaunt mich, daß sich Excel hier so doof anstellt! ------------------ Lutz Federbusch Mein Gästebuch Der Mensch, Herr oder Sklave der Technik? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
carsten-3m Mitglied Dipl.-Ing. Mbau (Produktmanagement, Patent- und Normwesen)
Beiträge: 950 Registriert: 08.05.2007 Excel 2010
|
erstellt am: 22. Jan. 2008 10:31 <-- editieren / zitieren --> Unities abgeben: Nur für Lutz Federbusch
Ich verwende selbst eine Kostenübersicht aus der durch Druck auf einen einzigen Knopf auf eine Sicht der Detailkosten gesprungen werden kann. Hierbei wird ganz einfach die Cursoradresse ausgewertet, so dass das Makro weiß, wo der Anwender herkommt. Code: cursor = ActiveCell.Address zeile = Mid$(cursor, 4)
------------------ Seit Pro/E Version 1 dabei, auwei... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Lutz Federbusch Ehrenmitglied V.I.P. h.c. Dipl.-Ing. Maschinenbau
Beiträge: 3093 Registriert: 03.12.2001
|
erstellt am: 22. Jan. 2008 10:50 <-- editieren / zitieren --> Unities abgeben:
Wenn ich auf einen Knopf klicke, weiß ich doch, daß ich auf dem Knopf bin Das Problem von den Knöpfen, die zur Makrolaufzeit auf einem neu erstellten Blatt angelegt werden ist doch aber, daß es noch keine Routine für den Knopf gibt. Also auch keine Stelle, in der ich die Mausposition auswerten kann. Ansonsten bräuchte ich auch den Knopf nicht. Nur daß dann niemand weiß, wie er das Hinzufügen zum anderen Blatt anschieben soll... ------------------ Lutz Federbusch Mein Gästebuch Der Mensch, Herr oder Sklave der Technik? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
carsten-3m Mitglied Dipl.-Ing. Mbau (Produktmanagement, Patent- und Normwesen)
Beiträge: 950 Registriert: 08.05.2007 Excel 2010
|
erstellt am: 22. Jan. 2008 11:11 <-- editieren / zitieren --> Unities abgeben: Nur für Lutz Federbusch
Lutz, nix für ungut, wir helfen alle gern hier, aber das ist ja das reinste Ratespiel mit Deinen kleckerweise kommenden Anforderungen. Versuch doch mal bitte, die zu lösende Aufgabenstellung halbwegs vollständig darzulegen, dann findet sich bestimmt auch ein brauchbarer Lösungsansatz. ------------------ Seit Pro/E Version 1 dabei, auwei... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Lutz Federbusch Ehrenmitglied V.I.P. h.c. Dipl.-Ing. Maschinenbau
Beiträge: 3093 Registriert: 03.12.2001
|
erstellt am: 22. Jan. 2008 12:26 <-- editieren / zitieren --> Unities abgeben:
Also nochmal gaaaanz ruhig: Ich habe auf einem Tabellenblatt eine Liste mit etlichen Zeilen. Wieviele weiß erstmal nicht, denn das wird auch mit Makro befüllt. Und kann morgen anders aussehen. Darin sind Teile mit ein paar Namen und Angaben dazu aufgelistet. Auf diesem Tabellenblatt ist ein Kommandoknopf, der bei Betätigung im Hintergrund ein neues Blatt erzeugt und hinter jedem Eintrag der ersten Liste einen Hyperlink oder Kommandoknopf hinzufügen soll, mit dem man nun bei Anklicken das Teil der Liste mit seinen Angaben, die auch in der Zeile mit stehen auf das im Hintergrund erzeugte Blatt schreiben kann (für Ersatzteilbestellung)... Ich hoffe, nun ists verständlich, was ich will. Das muß doch gehen! Mit Hyperlingen kann ich scheinbar keine Makroroutinen anspringen und Befehlsknöpfe kann ich zwar auch im Makro zur Laufzeit erzeugen, allerdings nicht festlegen, wie der Code dazu ist?! Ist auch ein wenig sinnfrei. Aber irgendwas zum Anklicken hätte ich da eben gerne ------------------ Lutz Federbusch Mein Gästebuch Der Mensch, Herr oder Sklave der Technik? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
carsten-3m Mitglied Dipl.-Ing. Mbau (Produktmanagement, Patent- und Normwesen)
Beiträge: 950 Registriert: 08.05.2007 Excel 2010
|
erstellt am: 22. Jan. 2008 17:19 <-- editieren / zitieren --> Unities abgeben: Nur für Lutz Federbusch
Gut, hab ich soweit einigermaßen verstanden. Und... auch bereits einen Lösungsansatz dazu oben angedeutet. Ich werde diesen mal näher erläutern. Deine sich täglich ändernde Tabellenliste enthält (so würde ich vorschlagen) zumindest einen sich nicht ändernden Kopfbereich, in dem meines Erachtens nach max. zwei Knöpfe angeordnet sein sollten. Der erste Knopf (benannt z. B. mit INIT) startet einen VBA-Programmteil, der im Hintergrund ein neues Blatt und was auch immer noch erzeugt, ganz nach Deinen Vorstellungen. Meinetwegen markiert er die Listeneinträge auch irgendwie, um kenntlich zu machen, dass der Vorgang (INIT) abgeschlossen wurde. Der zweite Knopf (benannt z. B. mit ERSATZTEIL) prüft nun - wie oben angedeutet - wo der Cursor aktuell steht (nämlich irgendwo in der Zeile, dessen Inhalt in das zweite Blatt kopiert werden soll) und tut eben genau das, er kopiert den oder die Zellinhalte ganz wie erforderlich. Der Vorteil meines Vorschlags liegt wohl darin, dass der sich häufig ändernde Listenteil des ersten Blatts nicht per Programm mit Knöpfen versehen werden muss, sondern einzig die Cursorposition detektiert wird, um herauszufinden, welche Zeile kopiert werden soll. Das ganze ließe sich sogar mit nur einem Knopf und nur einem Makro abhandeln. Dazu prüft das Makro zu anfangs, ob es das zweite Blatt bereits erstellt hat. Wenn nicht, wird's halt erstellt, wenn bereits vorhanden, wird die zweite Operation (Cursorzeile detektieren, Zeile kopieren) angestoßen. Probiers mal aus und sag an wo's klemmt. Viel Erfolg! ------------------ Seit Pro/E Version 1 dabei, auwei... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Lutz Federbusch Ehrenmitglied V.I.P. h.c. Dipl.-Ing. Maschinenbau
Beiträge: 3093 Registriert: 03.12.2001
|
erstellt am: 22. Jan. 2008 18:08 <-- editieren / zitieren --> Unities abgeben:
Vielen Dank! So würde es gehen. So will ich es aber nicht, da zum Hinzufügen eben etwas zum Anklicken da sein soll. Jetzt habe ich gerade eine Lösung gefunden, die funktioniert. Kommt mir zwar unelegant vor, aber geht immerhin. Dazu erstelle ich auf meinem Blatt in jeder Zeile einen Hyperlink, der auf eine Excel-Datei verweist. Diese Exceldatei ist leer und hat aber ein Makro ("Private Sub Workbook_Open"), das beim Laden der Datei automatisch ausgeführt wird. Dieses Makro führt nun endlich die gewünschte Routine (da die Zelle, deren Hyperlink geklickt wurde noch aktiv ist, weiß ich auch, aus welcher Zeile der Klick kam) aus (allerdings ist nun der Dateiname festverdrahtet, mal sehen, ob ich das noch wegbekomme), dann aktiviert es mein urprüngliches Tabellenblatt und schließt die gerade geöffnete Datei wieder. Schöner wäre es, wenn das alles in derselben Datei ginge. Die Sicherheitsabfrage zum Aktivieren der Makros stört und daß es eben nun zwei Dateien sind, die weitergegeben werden müssen. ------------------ Lutz Federbusch Mein GästebuchDer Mensch, Herr oder Sklave der Technik? [Diese Nachricht wurde von Lutz Federbusch am 24. Jan. 2008 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |