Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1752to1756
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

Excel-Formen in Userformen nutzen

Excel-Formen in Userformen nutzen
13.04.2020 19:38:47
Jubel
Hi Leute,
kann man Excel-Formen (zu finden unter Einfügen, dann Formen und dann z.B. freihandgezeichnete Formen) auch auf Userformen platzieren und mit VBA ansprechen?
Hintergrund: Ich würde gerne eine Landkarte auf einer Userform basteln, auf der ca. 100 unterschiedliche Regionen abgebildet werden sollen. Diese Region sollen jeweils einzeln angeklickt werden können und dann weiterführende Dialoge bieten. Die 100 Regionen ergeben also zusammen eine Gesamtkarte aus 100 Schaltflächen.
Problem: Die Grenzen der Regionen sind natürlich kurvig und können nur per Freihandzeichnung abgebildet werden.
Leider habe ich bisher aber kein Steuerelement in VBA gefunden, mit dem ich Freihandformen erstellen konnte, die ich dann als "Button" nutzen kann (also bei Klick darauf einen Code auslösen kann).
Ich habe einen Versuch gestartet, bei dem ich diverse Bilder mit transparentem Hintergrund eingefügt habe, wobei diese Bilder dann die Regionen mit ihren Kurvenformen zeigen. Danach habe ich die Bilder dann so zusammengeschoben, dass sie die Karte ergeben. Ist allerdings unglaublich mühselig und hat seine Tücken (z.B. weil die Klickfläche eines Bildes weiterhin rechteckig ist und sie sich gegenseitig überlappen).
Hat jemand eine andere bzw. bessere Idee, wie man sowas darstellen kann?

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Excel-Formen in Userformen nutzen
13.04.2020 20:52:58
Daniel
Hi
Verzichte auf die Userform.
Du kannst in Excel über das Kontextmenü jedem beliebigen Grafikelement ein Makro aus einem allgemeinen Modul zuweisen, welches dann bei Klick auf das Element ausgeführt wird.
In diesem Makro kannst du mit Applications.Caller den Namen des aufrufenden Steuerelemrnts abfragen, so dass du je nach Programmierung mit einem einzigen Makro auskommt.
Dh direkt in einer Exceltabelle kannst du drin Vorhaben viel einfacher realisieren als in einer Userform.
Gruß Daniel
AW: Excel-Formen in Userformen nutzen
13.04.2020 23:18:10
Jubel
Hi Daniel,
das wäre eine Möglichkeit, ja. Allerdings bette ich diese Karte im Rahmen eines "Spiels" ein und möchte den Anwender über klar gesteuerte Oberflächen (d.h. Userforms) führen (das Ganze fügt sich dann in einen größeren Dialog von Userformen ein).
Auf einer Userform habe ich also keine Chance, solche Freihand gezeichneten Schaltflächen irgendwie abzubilden?
Anzeige
AW: Excel-Formen in Userformen nutzen
14.04.2020 07:33:54
Daniel
Hi
Ich will nicht behaupten, dass es nicht geht, aber ich habe keine Ahnung wie es gehen könnte.
Durchsuch mal die zusätzlichen Steuerelemente (Findest du über das Kontextmenü des Werkzeugkasten)
Eine andere Möglichkeit wäre, dass du von der Landkarte ein Bild erstellt und dieses als Imagecontrol in die Userform einfügst.
Im MouseDown-/MouseUp-Event kannst du die Koordinaten der Klickposition ermitteln.
Dh du müsstest dann in einer Datentabelle hinterlegen, welche x-Y-Koordinate zu welchem Land gehört, so dass du über die Klickposition aus dieser Tabelle das Land ermitteln kannst.
Ist zwar etwas aufwendig, aber mit Hilfe das MouseMove-Events könntest du dir ein Hilfstool programmieren, welches dir ermöglicht, diese Datentabelle durch abfahren der Ländergrenzen mit der Maus zu erstellen.
Gruß Daniel
Anzeige
AW: Excel-Formen in Userformen nutzen
14.04.2020 10:32:28
Daniel
Ich hab mal ein bisschen rumprobiert.
Wenn du die vollständige Landkarte in einem Bild hast, ist es relativ einfach die dazu benötigte Datentabelle zu erzeugen.
Man kann in der Userform die Grenzen mit der Maus Nachfahren und dabei in die Datentabelle über tragen.
Das benötigt eine einzige Zeile Code im MouseMove.
Auch das Füllen der entstandenen Flächen kann man durch ein kurzes Makro ausführen lassen.
Sind vielleicht 20 Zeilen Code im Ganzen.
Das würde ich für sinnvoller halten, weil du damit nur ein einziges Steuerelement in der Userform benötigst und nicht hundert.
Wenn du Interesse hast, melde dich.
Gruß Daniel
Anzeige
AW: Excel-Formen in Userformen nutzen
19.04.2020 16:38:05
Jubel
Hi Daniel,
das klingt ja genial! Ich hatte deine Antworten gar nicht mehr gesehen und bin erst durch deine Antwort auf meine andere Frage hierauf gekommen.
Ich hatte in der Zwischenzeit an meiner uneleganten Lösung herumgewerkelt (die ca. 100 Regionen als einzelne GIF-Bilder mit transparentem Hintergrund, aus denen dann die Gesamtkarte basteln und dann die Bilder als Schaltflächen im Code nutzen), aber ich bin mir nicht mal sicher, ob die (performanceseitig) hinterher auch wirklich trägt.
Dein Ansatz klingt tausendmal eleganter. Eine Nachfrage/Erläuterung meinerseits: Das Spiel läuft hinterher auf mehreren Windows-Tablets, die Userformen werden also per Touch bedient. Wäre das bei deiner Lösung auch möglich?
Auf jeden Fall schon mal vielen Dank für deine bisherigen Mühen!
Grüße
JDB
Anzeige
AW: Excel-Formen in Userformen nutzen
19.04.2020 16:56:53
Daniel
hi
da musst du mal testen, ob das MouseDown_event des Imagecontrols in diesem Fall vernünftige x/y_koordinaten liefert. (das kannst du ja auch so hne die Karte testen)
wenn ja, funktioniert die fertige Anwendung mit Tablet
für die einfache Generierung der Hintergrundtabelle wäre eine Maus hilfreich sonst wird das zu Aufwendig
gruß Daniel

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige