Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1588to1592
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

Mausklick registrieren

Mausklick registrieren
29.10.2017 00:08:13
Barbaraa
Hallo
kann man einen Mausklick registrieren?
Ich starte ein Makro, das wartet, bis die Maustaste getätigt wurde, je nachdem, was zuerst eintritt. Dabei soll aber auch ein Mausklick in einen Nicht-Excel-Bereich erkannt werden.
Dann soll das Makro weiter laufen und zB die Mausposition bestimmen. Das geht mit "GetCursorPos", wie mir bereits bekannt ist (dank Eurer Hilfe).
LG, Barbara

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Mausklick registrieren
29.10.2017 06:58:11
Luschi
Hallo Barbara,
wenn ich mir Deine letzten Anfragen anschaue, dann kreisen sie alle um die Bedienung der Maus und deren Aktionen. Ich frage, waß Du eigentlich tatsächlich vorhast? Laß doch mal die Katze aus dem Sack!
Gruß von Luschi
aus klein-Paris
AW: Mausklick registrieren
29.10.2017 08:57:26
Nepumuk
Hallo Barbara,
im Prinzip so:
Option Explicit

Private Declare Function GetKeyState Lib "user32.dll" ( _
    ByVal nVirtKey As Long) As Integer

Private Const VK_LBUTTON = &H1

Public Sub test1()
    Do
        Debug.Print GetKeyState(VK_LBUTTON)
        If GetKeyState(VK_LBUTTON) <> 0 Then Exit Do
        DoEvents
    Loop
    MsgBox "Weiter gehts"
End Sub

Gruß
Nepumuk
Anzeige
AW: Mausklick registrieren
29.10.2017 09:28:58
Nepumuk
Hallo nochmal,
besser so:
If GetKeyState(VK_LBUTTON) And &H8000 = &H8000 Then Exit Do

Gruß
Nepumuk
AW: Mausklick registrieren
29.10.2017 10:42:43
Barbaraa
Hi Nepumuk,
danke für Dein Beispiel. Leider habe ich es nicht so richtig verstanden. Kannst Du dir mal mein Makro ansehen? Da habe ich etwas herumprobiert. Es soll jeden Mausklick (wenn geht, Links- und Rechtsklick) registrieren können.
Public Sub test1()
Dim EndZeit As Date
EndZeit = Now + TimeValue("0:00:03")
Do
If GetKeyState(VK_LBUTTON) And &H8000 = &H8000 Then
MsgBox "Maustaste wurde betätigt"
DoEvents
EndZeit = Now + TimeValue("0:00:03")
End If
Loop Until Now > EndZeit 'Abbruch nach 3 Sek ohne Mausklick
MsgBox "Fertich"
End Sub
@Luschi
Was ich eigentlich vorhabe, ist, einen Art Mausrekorder zu basteln, um dann eine Folge von Mausklicks und Tastenbefehlen abspielen zu können. Ziel: Eine Nicht-Excel-Anwendung, zB einen Online-Rechner für Kreisumfang, mit Werten aus meiner Excel-Tabelle zu füttern und die Ergebnisse wieder in meine Excel-Tabelle zu bringen, und das 3000 Mal.
LG, Barbara
Anzeige
2 * r * PI
29.10.2017 10:57:35
Sepp
Hallo Barbara,
für den Kreisumfang braucht man aber wohl keinen Onlinerechner!
Und zu deinem Vorhaben: Das simulieren von Mausaktionen geht auf dauer sicher in die Hose, das ist Steinzeitprogrammierung!
Gruß Sepp

AW: 2 * r * PI
29.10.2017 11:55:11
Barbaraa
Hallo Sepp,
die Berechnung des Kreisumfanges ist ja nur ein anschauliches Beispiel.
Auf den Online-Rechner bin ich leider angewiesen, da mir der Rechenweg nicht bekannt ist. Um den Online-Rechner nutzen zu können, will ich das händische Übertragen simulieren.
Vielleicht ist das steinzeitlich, aber für mich derzeit der einzige Weg.
Es gibt auch andere Einsatzmöglichkeiten. Zum Beispiel, eine Tabelle für die kürzeste Zugverbindung von A nach B für eine Liste von verschiedenen Abfahrtszeiten zu erstellen.
Und nicht zuletzt: Es macht an sich Spass, VBA-Lösungen zu finden.
LG,
Barbara
Anzeige
AW: 2 * r * PI
29.10.2017 13:21:33
Sepp
Hallo Barbara,
aber für mich derzeit der einzige Weg
man kann Elemente eines Web-Formulares auch direkt ansprechen, ohne die Mouse-Events zu simulieren!
Gruß Sepp

AW: Mausklick registrieren
29.10.2017 11:04:37
Nepumuk
Hallo Barbara,
teste mal:
Option Explicit

Private Declare Function GetKeyState Lib "user32.dll" ( _
    ByVal nVirtKey As Long) As Integer

Private Const VK_LBUTTON As Long = &H1

Public Sub test1()
    Dim EndZeit As Date
    EndZeit = Now + TimeValue("0:00:03")
    Do
        If GetKeyState(VK_LBUTTON) < 0 Then
            MsgBox "Maustaste wurde betätigt"
            EndZeit = Now + TimeValue("0:00:03")
        End If
        DoEvents
    Loop Until Now > EndZeit 'Abbruch nach 3 Sek ohne Mausklick
    MsgBox "Fertich"
End Sub

Gruß
Nepumuk
Anzeige
AW: Mausklick registrieren
30.10.2017 13:00:17
Niclaus
Hallo Nepumuk
Ich habe eine (ganz allgemeine) Frage zu Deinem Makro: Die Meldung "Maustaste wurde betätigt" wird mir ausgegeben. Aber nur dann, wenn ich in eine andere Excel-Datei oder in ein anderes Programm (Word, Internet Explorer, VBA-Explorer usw.) klicke. Ich erhalte keine Meldung, wenn ich innerhalb der Excel-Datei, in der ich das Makro aufrufe, eine Mausbewegung (Mausklick) mache, egal ob ich den Klick in der gleichen oder in einer andern Tabelle der aktiven Datei mache.
Kannst Du mir erklären, warum sich GetKeyState so verhält?
Vielen Dank und viele Grüsse Niclaus
AW: Mausklick registrieren
30.10.2017 13:13:17
Nepumuk
Hallo Niclaus,
nein, kann ich nicht.
Gruß
Nepumuk
Anzeige
P.S.
30.10.2017 13:28:12
Nepumuk
Hallo nochmal,
das liegt bestimmt an Excel, denn wenn ich per API den Cursor ändere, dann hat das auf alle Programme einer Auswirkung, nur auf Excel nicht.
Gruß
Nepumuk
AW: P.S.
31.10.2017 14:36:45
Niclaus
Vielen Dank für die Info.
Grüsse Niclaus

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige