Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
812to816
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
812to816
812to816
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Position des Buttons herausfinden

Position des Buttons herausfinden
30.10.2006 08:20:51
Winfried
Hallo Freaks
wie kann ich die Postion eines Buttons (habe mehrere auf einem Tabellenblatt)
abfragen, um so festzustellen, welcher Button gedrückt wurde. Weil - je nachdem welcher Button gedrückt wurde, soll ein entsprechendes Makro starten.
Vielen Dank
W.Mommers

15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Position des Buttons herausfinden
30.10.2006 08:36:39
Ptonka
Hallo,
da brauchst Du gar nichts abfragen.
Wenn Du die Schaltflächen (Buttons) auf Deinem Tabellenblatt hast und jedem ein entsprechendes Makro zuweisen willst, brauchst Du nur den Button markieren, rechte Maustaste klicken und das entspr. Makro dem Button zuweisen.
Gruß,
Ptonka
AW: Position des Buttons herausfinden
30.10.2006 08:44:41
Winfried
Hallo Ptonka
das ist mir schon klar - ich möchte aber nur ein Makro verwenden.
Wenn ich z.B. 10 Buttons zeilenmäßig untereinander liegen habe, will ich nur ein Makro starten - dieses soll dann je nachdem welchen Button ich angeklickt habe (deshalb brauche ich ja die Position), eine PDF-Datei öffnen, die Adresse dieser Datei steht entsprechend in den Nachbarzellen des jeweiligen Buttons. Angestoßen werden soll aber nur ein Makro !!!
W.Mommers
Anzeige
AW: Position des Buttons herausfinden
30.10.2006 09:15:37
Reinhard
Hi Winfried,
hast du nun a)Schaltflächen oder b)Buttons?
Erstere kommen aus "Formular", letztere aus "Steuerelementtoolbox?
a) allen das gleiche Makro zuweisen:
Option Explicit
Sub tt()
Dim ov, Starten
Set ov = ActiveSheet.Shapes(Application.Caller)
Starten = Shell(Cells(ov.TopLeftCell.Row, ov.TopLeftCell.Column - 1))
End Sub
ggfs, in die shell noch den Pfad zu dem Adobe Reader
b) du brauchst ein Klassenmodul dann geht das mit einem Makro. Ansonsten wie schon gesagt, jedem einen eigenen Code zuweisen:
Option Explicit

Private Sub CommandButton1_Click()
Call MeinMakro(1)
End Sub


Private Sub CommandButton2_Click()
Call MeinMakro(2)
End Sub

usw.
Gruß
Reinhard
Anzeige
AW: Position des Buttons herausfinden
30.10.2006 09:55:27
Winfried
Hallo Reinhard
das klingt schon besser (soll heißen kommt meinem Anliegen näher).
1. habe ich Schaltflächen (genaugenommen sind es Bilder=Objekte)
2. was meinst du mit Caller ?
3. ich will (wie gesagt) nur ein Makro starten und in einer separaten Tabelle
die Pfade zu den Dateien die ich mit diesem einen Makro öffnen will auslesen !!
vielen Dank
W.Mommers
AW: Position des Buttons herausfinden
30.10.2006 10:59:58
Reinhard
Hi Winfried,
also liegt a) vor.
getestet, in einer Zelle steht: c:\download\08sim.pdf , rechts davon auf gleicher Höhe (es gelten die linken oberen Ecken der zelle und der Grafik) ist eine Grafik der das Makro tt zugewiesen ist:
Option Explicit
Sub tt()
Dim ov, Starten, Adobe
Adobe = "C:\Programme\Adobe\Acrobat 7.0\Reader\AcroRd32.exe "
Set ov = ActiveSheet.Shapes(Application.Caller)
Starten = Shell(Adobe & Cells(ov.TopLeftCell.Row, ov.TopLeftCell.Column - 1))
End Sub

Gruß
Reinhard
ps: Ich freue mich über eine Rückmeldung ob diese Antwort hilfreich war oder nicht..
Anzeige
AW: Position des Buttons herausfinden
30.10.2006 11:57:19
Winfried
Hallo Reinhard
also zunächst einmal vielen Dank für deine bisherige Mühe.
Das Objekt (=Bild o. Icon) welches ich anklicke gibt mir Excel jetzt zurück
dank ...Caller - soweit o.k.
Nur mit dem Aufrufen von Adobe ist das so eine Sache - es wird nämlich nicht die Datei geöffnet bzw. Adobe in den Vordergrund gebracht und Adobe ist leer.
Wie kann ich denn die Zellposition abfragen (also ohne direkt den Zellinhalt mit Adobe aufzurufen - nicht zuletzt, weil ich in dieser Zelle eigentlich einen Verweis auf ein anderes Tabellnblatt schreiben will, wo dann all dies zu öffnenden Dateien gepflegt werden).
Viele Grüße W.Mommers
Anzeige
AW: Position des Buttons herausfinden
30.10.2006 13:17:04
Reinhard
Hi Winfried,
hatte es getestet, es funktionierte. Warum es nicht funktioniert liegt entweder an Dir , an Excel oder an dem Reader...:-)
2 Varianten:
Sub tt1()
Dim ov, Starten, Adobe
Set ov = ActiveSheet.Shapes(Application.Caller)
MsgBox Cells(ov.TopLeftCell.Row, ov.TopLeftCell.Column).Address
End Sub
Sub tt2()
Call PDFAnzeigen(Application.Caller)
End Sub
Sub PDFAnzeigen(ByVal Bildnme As String)
'aus Tabelle2 mit Vlookup den PDF-Dateinamen zu Bildname holen und anzeigen
End Sub

Gruß
Reinhard
ps: Ich freue mich über eine Rückmeldung ob diese Antwort hilfreich war oder nicht..
Anzeige
AW: Position des Buttons herausfinden
30.10.2006 13:21:46
Winfried
Hallo Reinhard
jetzt klappts auch bei mir !!!!
(Habe über den verknüpften Zellinhalt - mit caller.topleftcell....
die entsprechende PDF-Datei geöffnet)
Suuuuper vielen Dank
W.Mommers
AW: Position des Buttons herausfinden
30.10.2006 08:44:06
Oberschlumpf
Hi Winfried
Es ist egal, wo welcher Button positioniert ist, da du direkt für jedes einzelne Klick-Ereignis jeden Buttons das jeweils vorgesehene Makro startest.
1. Wechsel auf dem Tabellenblatt mit den Makros in den Entwurfsmodus.
(dazu klickst du auf das ganz linke Symbol der Steuerelemente-Toolbox - es empfiehlt sich auch, nur Steuerelemente aus dieser Symbolleiste zu verwenden, da sich meiner Meinung nach diese besser steuern lassen, als die Elemente aus der Symbolleiste Formular)
2. Jetzt Rechtsklich auf einen Button und "Code anzeigen" auswählen
3. Excel wechselt in den VBA-Editor und rechts siehst du gleich 2 Code-Zeilen, die ungefähr so aussehen:

Private Sub Commandbutton1_Click()
End Sub

4. Zwischen diesen beiden Zeilen schreibst du für den ausgewählten Button den Code, der bei Klick des Buttons ausgeführt werden soll
5. Du wiederholst die Schritte von 2 - 5, bis du für alle Buttons den VBA-Code geschrieben hast
6. Nun wechselt du wieder in den Ausführen-Modus, in dem du wieder auf das in 1. beschriebene Symbol klickst.
Jetzt kannst du auf die einzelnen Buttons klicken und genau der Code wird gestartet, den du zuvor programmiert hattest.
Konnte ich helfen?
Ciao
Thorsten
Anzeige
AW: Position des Buttons herausfinden
30.10.2006 08:47:40
Winfried
Hi Thorsten
mein Problem ist anders gelagert - siehe meine obige Antwort.
Ich hoffe, mein Anliegen ist jetzt besser verständlich !!
W.Mommers
AW: Position des Buttons herausfinden
30.10.2006 10:04:11
Oberschlumpf
Hi Winfried
Dann entweder, wie schon erwähnt, ein Klasesnmodul (weiss ich aber auch nich wie das geht), oder so:
1. Füge dem VBA-Projekt ein allgemeines Modul zu
2. Schreibe in dieses Modul dieses Makro:

Sub ButtonMakro(ByVal welcherButton As Integer)
Select Case welcherButton
Case 1
Makro für Button 1
Case 2
Makro für Button 2
Case 3
Makro für Button 3
usw
End Select
End Sub

3. In jedes Klick-Ereignis deiner Buttons schreibst du dieses:

Private Sub Commundbutton1_Click()
Call ButtonMakro(1)
End Sub
Private Sub Commundbutton2_Click()
Call ButtonMakro(2)
End Sub
Private Sub Commundbutton3_Click()
Call ButtonMakro(3)
End Sub
usw

Daran, dass du nun mal in jedes Klick-Ereignis etwas reinschreiben musst, kommst du nicht vorbei.
Mit diesem Code-Konstrukt übergibst du bei jedem Klick auf einen Button dem Makro ButtonMakro einen bestimmten Wert.
Im Makro wird dieser Wert dann ausgewertet, und nur der entsprechende Code, der mit Case diesem Wert zugeordnet ist, wird ausgeführt.
Hier hast du zwar alle "Einzelmakros" nur in einem Makro zusammengefasst, aber die Code-Pflege ist trotzdem einfacher, da du bei Änderungen nur in diesem Code Änderungen vornehmen musst, aber eben nicht jedes einzelne Klick-Ereignis korrigieren musst.
Weitere Hilfe zu den hier verwendeten Funktionen, wie z Bsp Select Case, findest du in der Excel-Hilfe.
Konnte ich helfen?
Ciao
Thorsten
Anzeige
AW: Position des Buttons herausfinden
30.10.2006 10:40:21
Daniel
Hallo
wennd du mit mehreren Buttons, die aber alle das gleiche Makro haben sollen, arbeiten willst, nimmst du als Buttons am besten ganz normale Grafikelmente.
Vorteile:
- du hast die meisten Formatierungsöglichkeiten bezgl Farbe UND Form
- einfachste Makrozuweisung an ein bestehendes Makro über Kontextmenü
Die Abfrage, welcher Button gedrückt wurde, erfolgt über die Funktion: APPLICATION.CALLER
Rückgabewert ist der NAME des Shapes. Der Name des jeweiligen Shapes bekommst du raus, wenn du das Shape auswählst, dann wird in der linken oberen Ecke der Shape-Name angezeigt. Hier kannst du ihn bei Bedarf ändern.
Dia Abfrage sieht dann eventuell so aus:

select case application.caller
case "rechteck 1"
case "rechteck 2"
end select

wenn die Zellposition des gedrücken Buttons für irgendwelche Aktionen wichtig ist, geht das dann über
activesheet.Shapes(Application.caller).topleftcell
Gruß, Daniel
Anzeige
AW: Position des Buttons herausfinden
30.10.2006 11:13:45
Winfried
Hi Daniel
das ist ja (fast) genau das was ich brauche - übrigens hatte Reinhard (siehe weiter oben)
schon eine ganz ähnliche Lösung.
Klappt soweit auch ganz prima - Excel gibt mir über diesen Caller den Namen des Bildes (icons) an , welches ich gerade gedrückt hatte.
Aber mit der Zellposition habe ich noch Schwierigkeiten !!
Wie kriege ich die Position denn abgefragt ? Dein Tipp mit ...topleft bleibt bei mir immer leer - was mache ich falsch ?
Auf jeden Fall schon mal herzlichsten Dank
W.Mommers
AW: Position des Buttons herausfinden
30.10.2006 11:20:57
Daniel
Hallo
die Funktion TopLeftCell gibt dir ein Range-Objekt zurück, mit dem du entsprechen umgehen musst,
also z.B.
Dim rngZelle as Range
Set rngZelle = ActiveSheet.Shapes(Application.Caller).TopLeftCell
oder
Dim strAddr as String
strAddr = ActiveSheet.Shapes(Application.Caller).TopLeftCell.address
oder
ActiveSheet.Shapes(Application.Caller).TopLeftCell.interior.colorindex = 6
ActiveSheet.Shapes(Application.Caller).TopLeftCell.value = TRUE
Gruß, Daniel
Anzeige
AW: Position des Buttons herausfinden
30.10.2006 13:22:57
Winfried
Hallo Daniel
das ist genau das was mir noch fehlte !!!!
Vielen Dank - klappt alles wie gewünscht !!!
W.Mommers
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige
Archiv - Verwandte Themen
Forumthread
Beiträge