Call befehl öffnet Makro auswahl
Hallo,
ich habe ein Modul, welches den Num-Look an/ausschalten kann.
Rufe ich per CALL Befehl den aus/an Befehl auf funktioniert dieses.
Modul
Sind die Werte in dem Modul falsch als Private/Public deklariert?
ich habe ein Modul, welches den Num-Look an/ausschalten kann.
Rufe ich per CALL Befehl den aus/an Befehl auf funktioniert dieses.
Modul
Öffne ich dieses in einem Formular erscheint die Marko Auswahl
Private Declare Function GetKeyboardState Lib "user32" _
(pbKeyState As Byte) As Long
Private Declare Function GetKeyState Lib "user32" _
(ByVal nVirtKey As Long) As Integer
Private Declare Function GetVersionEx Lib "kernel32" _
Alias "GetVersionExA" (lpVersionInformation As OSVERSIONINFO) As Long
Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, _
ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
Private Declare Function SetKeyboardState Lib "user32" (lppbKeyState As Byte) As Long
Private Const VER_PLATFORM_WIN32_NT = 2
Private Const VER_PLATFORM_WIN32_WINDOWS = 1
Private Const KEYEVENTF_EXTENDEDKEY = &H1
Private Const KEYEVENTF_KEYUP = &H2
Private Const VK_CAPS = &H14
Private Const VK_NUM = &H90
Private Const VK_SCROLL = &H91
Private keys(0 To 255) As Byte
Private Type OSVERSIONINFO
dwOSVersionInfoSize As Long
dwMajorVersion As Long
dwMinorVersion As Long
dwBuildNumber As Long
dwPlatformId As Long
szCSDVersion As String * 128
End Type
Private oSv As OSVERSIONINFO
Private Function KeyStatus(Taste) As Boolean
Dim bInsertKeyState As Boolean
oSv.dwOSVersionInfoSize = Len(oSv)
GetVersionEx oSv
GetKeyboardState keys(0)
KeyStatus = keys(Taste)
End Function
Private Sub Switch(Taste, AnAus As Boolean)
If (KeyStatus(Taste) <> AnAus) Then
If (oSv.dwPlatformId = VER_PLATFORM_WIN32_WINDOWS) Then
keys(Taste) = 1
SetKeyboardState keys(0)
ElseIf (oSv.dwPlatformId = VER_PLATFORM_WIN32_NT) Then
keybd_event Taste, &H45, KEYEVENTF_EXTENDEDKEY Or 0, 0
keybd_event Taste, &H45, KEYEVENTF_EXTENDEDKEY Or KEYEVENTF_KEYUP, 0
End If
End If
End Sub
Private Sub An()
Switch VK_NUM, 0
Switch VK_CAPS, 0
Switch VK_SCROLL, 0
End Sub
Private Sub Aus()
Switch VK_NUM, 1
Switch VK_CAPS, 0
Switch VK_SCROLL, 0
End Sub
Private Sub Status()
MsgBox "Num : " & KeyStatus(VK_NUM) & vbNewLine & _
"Caps: " & KeyStatus(VK_CAPS) & vbNewLine & _
"Scroll: " & KeyStatus(VK_SCROLL), _
vbExclamation, "Tastenstatus"
End Sub
Sind die Werte in dem Modul falsch als Private/Public deklariert?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 262782
Url: https://administrator.de/forum/call-befehl-oeffnet-makro-auswahl-262782.html
Ausgedruckt am: 06.04.2025 um 03:04 Uhr
3 Kommentare
Neuester Kommentar

Sind die Werte in dem Modul falsch als Private/Public deklariert?
Yup ...Gruß jodel32

Pack alles in ein Klassen-Modul und mach die Prozeduren An und Aus Public, wenn du die Status-Funktion ebenfalls benötigst, ebenfalls als Public definieren.
Dann erstellst du dort wo du die Funktionen anwenden willst eine Instanz der Klasse, und rufst die Funktionen damit auf:
p.s. API Aufrufe wie
Dann erstellst du dort wo du die Funktionen anwenden willst eine Instanz der Klasse, und rufst die Funktionen damit auf:
Dim myclass as new NamedesKlassenmoduls
myclass.An
p.s. API Aufrufe wie
Private Declare Function
müssen immer in ein Modul, und gehen nicht wenn sie in ein Formular eingefügt werden !