Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Cursorposition

Cursorposition
06.04.2004 20:18:26
Heinz
Hallo,
habe Grafiken in ein Tabellenblatt eingefügt und würde gerne Vermessungen darauf vornehmen.
Gibt es eine Möglichkeit die jeweils aktuelle Cursorpositior auf ein in das Bild bereits eingezeichnetes Fadenkreuz zu bewegen und
1.) entweder ( x / y ) anzuzeigen oder
2.) per Mausklick oder ähnliches diese Position(en) zu speichern, um dann in einer Tabelle weitere Berechnungen vorzunehmen ?
Danke!
Heinz
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Cursorposition
06.04.2004 20:33:58
andre
hallo heinz,
erst mal das als ansatz. es wird aber nur die position bezogen auf das Blatt bzw. den Bildschirm ausgegeben. getestet ist es allerdings unter 2000, hoffe, dass es auch mit 97 geht.


Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
Private Type POINTAPI
    x As Long
    y As Long
End Type
Sub WoBinIch()
  Dim pTargetPoint As POINTAPI
  Dim Ret_Val As Long
  Ret_Val = GetCursorPos(pTargetPoint)
    MsgBox "Meine Position:" & chr(10) & _
        "x: " & pTargetPoint.x & " / y: " & pTargetPoint.y
End Sub

     Code eingefügt mit Syntaxhighlighter 2.5

gruss andre
Anzeige
AW: Cursorposition
06.04.2004 20:52:58
Heinz
Danke Andre,
funktioniert offensichtlich auch unter 97, so dass er mir dann eine Ausgabebox mit
den X/Y - Koordinaten auf den Schirm gibt. Habe dazu das Makro über die Grafik aktiviert.
Bei der Bestätigung über "OK" kann ich einen neuen Punkt anklicken.
Das ist schonmal super.
Jetzt wäre eine Automatisierung der Ausgabe, der nächste Schritt, da ich pro Grafik
evtl. um die 50 Punkte anklicken muss. Wenn ich die noch irgendwo abgelegt bekäme, meine ich kriege ich die Vergrößerungsfaktoren etc. über eine Kalibrierung auch noch hin.
Danke Dir schonmal !
Heinz
Anzeige
AW: mache heute abend weiter oT
07.04.2004 05:47:51
andre
AW: Cursorposition
09.04.2004 07:19:09
andre
hallo heinz,
ist nun etwas später geworden, aber bei mir kommt nichts weg.
die aktion wird bei klicken mit der rechten maustaste ausgeführt.
erst kommt eine abfrage, und dann trotzdem noch das kontextmenü.
wenn du die abfrage nicht brauchst, kann man sie rausnehmen, wenn du es auf die linke maustaste nehmen willst, geht auch ..


'code in Tabellenmodul wo die Mausposition geprüft werden soll
Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
Private Type POINTAPI
As Long
As Long
End Type
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
'Blattt MausPosition anlegen!
  Dim pTargetPoint As POINTAPI
  Dim Ret_Val As Long
  Dim NaechsteZelle As Long
    Ret_Val = GetCursorPos(pTargetPoint)
    aktion = MsgBox("Meine Position:" & Chr(10) & _
        "x: " & pTargetPoint.x & " / y: " & pTargetPoint.y & Chr(10) & _
        "speichern?", vbYesNo)
    If aktion = vbYes Then
        If IsEmpty(Sheets("MausPosition").Cells(1, 1)) Then
            NaechsteZelle = 1
        Else
            'funktioniert nur wenn zelle 65536 noch leer ist
            NaechsteZelle = Cells(Rows.Count, 1).End(xlUp).Row + 1
        End If
        Sheets("MausPosition").Cells(NaechsteZelle, 1) = pTargetPoint.x
        Sheets("MausPosition").Cells(NaechsteZelle, 2) = pTargetPoint.y
    End If
End Sub

     Code eingefügt mit Syntaxhighlighter 2.5

gruss andre
Anzeige
AW: Cursorposition
06.04.2004 20:53:24
Heinz
Danke Andre,
funktioniert offensichtlich auch unter 97, so dass er mir dann eine Ausgabebox mit
den X/Y - Koordinaten auf den Schirm gibt. Habe dazu das Makro über die Grafik aktiviert.
Bei der Bestätigung über "OK" kann ich einen neuen Punkt anklicken.
Das ist schonmal super.
Jetzt wäre eine Automatisierung der Ausgabe, der nächste Schritt, da ich pro Grafik
evtl. um die 50 Punkte anklicken muss. Wenn ich die noch irgendwo abgelegt bekäme, meine ich kriege ich die Vergrößerungsfaktoren etc. über eine Kalibrierung auch noch hin.
Danke Dir schonmal !
Heinz
Anzeige
AW: Cursorposition
06.04.2004 23:03:14
K.Rola
Hallo,
eine ganz brauchbare Möglichkeit ist, deine Grafik in ein leeres
Diagramm einzufügen und das Diagramm der Größe der Grafik anzupassen.
Über ein Klassenmodul kannst du dann die XY- Koordinaten des Diagramms
direkt auslesen.
Das mit der API bringt dich nicht weiter.
Gruß K.Rola
Anzeige
;
Anzeige

Infobox / Tutorial

Cursorposition in Excel VBA nutzen


Schritt-für-Schritt-Anleitung

Um die aktuelle Cursorposition in Excel VBA zu ermitteln und zu nutzen, kannst du die API-Funktion GetCursorPos verwenden. Hier ist eine einfache Schritt-für-Schritt-Anleitung:

  1. Öffne den VBA-Editor:

    • Drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Füge ein neues Modul hinzu:

    • Klicke mit der rechten Maustaste auf "VBAProject (dein Arbeitsblattname)" und wähle "Einfügen" > "Modul".
  3. Kopiere den folgenden Code in das Modul:

    Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
    
    Private Type POINTAPI
       x As Long
       y As Long
    End Type
    
    Sub WoBinIch()
       Dim pTargetPoint As POINTAPI
       Dim Ret_Val As Long
       Ret_Val = GetCursorPos(pTargetPoint)
       MsgBox "Meine Position:" & vbCrLf & "x: " & pTargetPoint.x & " / y: " & pTargetPoint.y
    End Sub
  4. Führe das Makro aus:

    • Schließe den VBA-Editor, kehre zu Excel zurück und drücke ALT + F8. Wähle WoBinIch aus und klicke auf "Ausführen".
  5. Analysiere die Ausgabe:

    • Eine Meldungsbox zeigt dir die aktuellen X/Y-Koordinaten des Cursors auf dem Bildschirm.

Häufige Fehler und Lösungen

Fehler: Meldungsbox zeigt keine Koordinaten an
Lösung: Stelle sicher, dass der Code korrekt kopiert wurde und die API-Deklaration funktioniert. Überprüfe auch, ob die richtigen Berechtigungen in den Excel-Einstellungen gesetzt sind.

Fehler: Makro funktioniert nicht unter älteren Excel-Versionen
Lösung: Der Code wurde unter Excel 2000 getestet. Falls du eine ältere Version verwendest, könnte es notwendig sein, Anpassungen vorzunehmen.


Alternative Methoden

Eine alternative Möglichkeit, die Cursorposition zu ermitteln, ist die Verwendung eines Klassenmoduls. Hierbei kannst du ein Diagramm für die Grafik verwenden und direkt die XY-Koordinaten auslesen. Dies kann besonders nützlich sein, wenn du viele Punkte auf einmal erfassen möchtest.

  1. Füge ein Diagramm hinzu:

    • Erstelle ein leeres Diagramm und füge deine Grafik ein.
  2. Erstelle ein Klassenmodul:

    • Klicke mit der rechten Maustaste auf "VBAProject" und wähle "Einfügen" > "Klassenmodul".
  3. Nutze den Code aus dem Thread, um die XY-Koordinaten auszulesen.


Praktische Beispiele

Hier ist ein Beispiel, das zeigt, wie du die Cursorposition in einer Tabelle speichern kannst:

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
    Dim pTargetPoint As POINTAPI
    Dim Ret_Val As Long
    Dim Aktion As VbMsgBoxResult
    Ret_Val = GetCursorPos(pTargetPoint)

    Aktion = MsgBox("Meine Position:" & vbCrLf & "x: " & pTargetPoint.x & " / y: " & pTargetPoint.y & vbCrLf & "Speichern?", vbYesNo)

    If Aktion = vbYes Then
        Dim NaechsteZelle As Long
        If IsEmpty(Sheets("MausPosition").Cells(1, 1)) Then
            NaechsteZelle = 1
        Else
            NaechsteZelle = Cells(Rows.Count, 1).End(xlUp).Row + 1
        End If
        Sheets("MausPosition").Cells(NaechsteZelle, 1) = pTargetPoint.x
        Sheets("MausPosition").Cells(NaechsteZelle, 2) = pTargetPoint.y
    End If
End Sub

Tipps für Profis

  • Automatisierung: Überlege dir, wie du den Prozess automatisieren kannst, um mehrere Punkte effizient zu erfassen. Mit Schleifen und Arrays kannst du die Koordinaten in einem Rutsch speichern.
  • Verwendung von UserForms: Nutze UserForms, um die Eingaben zu vereinfachen und eine ansprechendere Benutzeroberfläche zu bieten.
  • Debugging: Verwende die Debug.Print-Anweisung, um Werte während der Laufzeit zu überprüfen, anstatt nur auf Meldungsboxen zu setzen.

FAQ: Häufige Fragen

1. Wie kann ich die Cursorposition in Excel VBA dauerhaft speichern?
Du kannst die Koordinaten in eine Tabelle speichern, indem du die entsprechenden Zellen in einem Arbeitsblatt beschreibst, wie im obigen Beispiel gezeigt.

2. Ist der Code auch mit Excel 365 kompatibel?
Ja, der Code sollte ohne Anpassungen in Excel 365 funktionieren.

3. Kann ich die Mausposition auch mit der linken Maustaste erfassen?
Ja, du kannst den Code anpassen, um die Funktionalität beim Klicken mit der linken Maustaste zu aktivieren, indem du die entsprechende Ereignisprozedur im Arbeitsblatt verwendest.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige