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

Erkennen von Formbewegung und Makroausführung

Erkennen von Formbewegung und Makroausführung
04.02.2018 20:19:44
Formbewegung
Guten Abend,
ich möchte, dass bei Bewegung einer speziellen Form auf dem Arbeitsblatt ein Makro ausgeführt wird.
Die Formen sind bereits eindeutig beschriftet auf dem Arbeitsblatt vorhanden als "FormA1", "FormA2" etc. Wird eine der Formen bewegt, soll ein Makro, welches den Y-Wert der Form im Diagramm "GruppierenA" berechnet und ausgibt, ausgeführt werden.
Das Makro zum ausführen funktioniert bereits. Allerdings muss ihm noch der Name der Form als String F übergeben werden.
Probleme habe ich bei der "Überwachung" des Arbeitsblattes, ob eine Form verschoben wurde. Hier verstehe ich aktuell nur, wie ich erfahre ob eine Zelle markiert wurde oder nicht. Wie das ganze für Form (Objekte?) funktioniert ist mir leider noch nicht klar.Unter Tabelle 1 (Diagramm) im VBA Code sind weitere Verständnisfragen im Bereich des Codes als Kommentare beschrieben.
Hoffe mir kann hier jemand weiterhelfen was für Fehler ich habe :)
Vielen Dank schonmal für die Mühe!
Lg David
Ps.: Bei Fragen einfach kurz kommentieren ich versuche so schnell wie möglich zu antworten!
Die Excel Version ist: Excel 2016
Die Datei lade ich als file hoch https://www.herber.de/bbs/user/119539.xlsm
Hier der Code des Microsoft Excel Objekt; Tabelle1 (Diagramm) mit den Grundlegenden Fragen:
Private Sub Worksheet_Selection(ByVal Target As Range)
'1. Hauptfrage: Wie erfasse ich, dass die Form mit dem speziellen Namen auf dem Blatt  _
verschoben wurde?
'2. Ist die Funktion Worksheet_Selection die richtige? Oder brauche ich hier eine andere  _
Funktion/Klasse etc?
'3. Ist der Unterschied ByVal -> Kopieren und ByRef -> Verlinken ?
'4. Was für Werte (Name von Formen, Position von Formen, Zellen etc) kann ich über  _
Worksheet_Selection prüfen?
'5. Wird alles, was im Bereich "Tabelle1 (Diagramm) im Hintergrund in einer Endlos-Schleife  _
ausgeführt? Und wenn ja kann man dies sinnvoller implementieren?
'Wenn Form mit dem Namen "FormA1" bewegt wird
If Target.Address  ActiveSheet.Shapes("FormA1").ShapeRange.IncrementLeft Or ActiveSheet. _
Shapes("FormA1").IncrementTop Then
Dim F As String
F = "FormA1"
'Dann rufe das Makro YachseUebertragen auf
Call YachseUebertragen.YachseUebertragen(F)
End Sub

Und hier das Makro das ausgeführt werden soll, sobald eine Form mit dem Namen Bewegt wird:
Sub YachseUebertragen(F As String)
' Überträgt automatisch den Y-Achsen Wert
'Geht zum Worksheet
Worksheets("Diagramm").Activate
'Fügt die Bewertung über die Formen ein
'Legt benötigte Variablen fest
Dim GruppierenAtop As Double 'GruppierenAtop = Grafik A
Dim GruppierenAleft As Double
Dim WertebereichTop As Double 'Wertebereich der Grafik
Dim WertebereichLeft As Double
Dim Ftop As Double 'Ftop= Form Position
Dim Fleft As Double
Dim Yachse As Double
GruppierenAtop = Worksheets("Diagramm").Shapes("GruppierenA").Top
GruppierenAleft = Worksheets("Diagramm").Shapes("GruppierenA").Left
'Legt Wertebereich fest
WertebereichTop = GruppierenAtop + 33
WertebereichLeft = GruppierenAleft + 57
'Legt Position von Form fest
Ftop = ActiveSheet.Shapes(F).Top
Fleft = ActiveSheet.Shapes(F).Left
MsgBox ("Jetzt kommt Grafik")
MsgBox (GruppierenAtop)
MsgBox (GruppierenAleft)
MsgBox ("Jetzt kommt Wertebereich")
MsgBox (WertebereichTop)
MsgBox (WertebereichLeft)
MsgBox ("Jetzt kommt Form")
MsgBox (Ftop)
MsgBox (Fleft)
'Prüft ob Form auf Diagramm eingeordnet ist und legt Y-Achsenwert fest
If Ftop >= WertebereichTop - 5 And Ftop If Fleft >= WertebereichLeft - 5 And Fleft If Ftop - WertebereichTop Yachse = 0.5
ElseIf Ftop - WertebereichTop > 14 And Ftop - WertebereichTop Yachse = 0.6
ElseIf Ftop - WertebereichTop > 41.5 And Ftop - WertebereichTop Yachse = 0.7
ElseIf Ftop - WertebereichTop > 69 And Ftop - WertebereichTop Yachse = 0.8
ElseIf Ftop - WertebereichTop > 96.5 And Ftop - WertebereichTop Yachse = 0.9
ElseIf Ftop - WertebereichTop > 124 And Ftop - WertebereichTop Yachse = 1
ElseIf Ftop - WertebereichTop > 151.5 And Ftop - WertebereichTop Yachse = 1.1
ElseIf Ftop - WertebereichTop > 179 And Ftop - WertebereichTop Yachse = 1.2
ElseIf Ftop - WertebereichTop > 206.5 And Ftop - WertebereichTop Yachse = 1.3
ElseIf Ftop - WertebereichTop > 234 And Ftop - WertebereichTop Yachse = 1.4
ElseIf Ftop - WertebereichTop > 261.5 And Ftop - WertebereichTop Yachse = 1.5
ElseIf Ftop - WertebereichTop > 289 And Ftop - WertebereichTop Yachse = 1.6
ElseIf Ftop - WertebereichTop > 316.5 And Ftop - WertebereichTop Yachse = 1.7
ElseIf Ftop - WertebereichTop > 344 And Ftop - WertebereichTop Yachse = 1.8
End If
End If
End If
'Gibt Y-Achsenwert der Form "FormA1" aus
MsgBox (Yachse)
End Sub

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Erkennen von Formbewegung und Makroausführung
04.02.2018 20:53:17
Formbewegung
Hallo David,
das verschieben einer Form löst kein Event aus!
Gruß Sepp

AW: Erkennen von Formbewegung und Makroausführung
04.02.2018 21:50:25
Formbewegung
Hallo David,
eine Alternative.
Form anklicken und mit den Pfeiltasten verschieben.
https://www.herber.de/bbs/user/119540.xlsm
Gruß Sepp

AW: Erkennen von Formbewegung und Makroausführung
05.02.2018 00:10:42
Formbewegung
Hallo Sepp,
vielen Dank dir schon einmal für die schnelle Antwort! Habe mir deine Version angeschaut. Soweit ich verstanden habe hast du es mit einer Schleife mit Timer gelöst, was nicht ganz optimal für den Anwendungsfall ist, den ich bei mir habe.
Da "das verschieben einer Form löst kein Event aus": was löst dann alles ein Event aus? Gibt es da eine Fausregel oder eine Art Library von Excel die man einsehen kann?
Hatte das hier mal im Forum gefunden. Dabei wird sobald man ein DropDown auswählt automatisch im Dokument gezoomt.
Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
On Error GoTo errorhandler
If Target.Validation.InCellDropdown Then ActiveWindow.Zoom = 200
Exit Sub
errorhandler:
ActiveWindow.Zoom = 100
End Sub
Heißt das, dass eine Auswahl des Dropdown Menüs in diesem Fall ein Event in Excel auslöst? Und das Event kann man dann über über Target.Validation.InCellDropdown erfassen?
Stehe in VBA noch etwas am Anfang bin also leider noch eher ein Laie auf dem Gebiet :)
Vielen Dank dir schon einmal für deine/eure Hilfe!
Gruß,
David
Anzeige
AW: Erkennen von Formbewegung und Makroausführung
05.02.2018 00:19:04
Formbewegung
Hallo David,
gehe in das Modul der Tabelle, klicke im Hauptfenster ins linke DropDown (Allgemein), dann kannst du im rechten DropDown alle Events der Tabelle sehen.
Gruß Sepp

AW: Erkennen von Formbewegung und Makroausführung
05.02.2018 17:10:51
Formbewegung
Hallo Sepp,
im rechten DropDown stehen dann ja alle Sub Funktionen. In deinem Beispiel wären das dann im Modul 1 die "moveshape". Ist die Funktion "moveshape" dann ein Event im Modul 1?
Wenn ja bedeutet das dann, dass ich ein Event gezielt anlegen kann und darüber dann möglicherweise, ähnlich wie in der Private Sub Worksheet_SelectionChange () im vorherigen Kommentar, Aktivitäten auf dem Blatt erfassen kann?
Oder verstehe ich das falsch?
Gruß,
David
Anzeige
AW: Erkennen von Formbewegung und Makroausführung
05.02.2018 17:23:46
Formbewegung
Hallo David,
es geht um die Events der Tabelle! Die kannst du nicht selber anlegen, zumindest nicht so wie du es dir vorstellst.
Für das verschieben eines Shapes gibt es kein Event.
Gruß Sepp

AW: Erkennen von Formbewegung und Makroausführung
05.02.2018 18:02:25
Formbewegung
Hallo Sepp,
vielen Dank für deine wie immer schnelle Antwort :)
Dass es für das Verschieben eines Shapes kein Event gibt, habe ich bereits verstanden.
Dachte nur, es gibt vielleicht andere Events für Shapes, welche ich benutzen kann.
Weist du wie ich herausfinden kann, was für Events in einer Tabelle (vorallem für Shapes, wenn es diese gibt)existieren?
Und kennst du zufälligerweise Threads/Tutorials in denen das Anlegen von Events beschrieben wird?
Gruß,
David
Anzeige
AW: Erkennen von Formbewegung und Makroausführung
05.02.2018 19:18:10
Formbewegung
Hallo David,
für Shapes gibt es gar keine Events!
Die Events der Tabelle siehst du im rechten DropDown, wenn du im linken 'Worksheet' auswählst.
Gruß Sepp

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige