Option Explicit Private Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer
Public Function CapsLockOn() As Boolean Dim iKeyState As Integer iKeyState = GetKeyState(vbKeyCapital) CapsLockOn = (iKeyState = 1 Or iKeyState = -127) End Function Private Sub cmdIsCapsOn_Click() If CapsLockOn = True Then MsgBox "Yes, Capslock is on!" Else MsgBox "No, Capslock is NOT on!" End If End Sub
[/vba]
И Вам добрый день [vba]
Код
Option Explicit Private Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer
Public Function CapsLockOn() As Boolean Dim iKeyState As Integer iKeyState = GetKeyState(vbKeyCapital) CapsLockOn = (iKeyState = 1 Or iKeyState = -127) End Function Private Sub cmdIsCapsOn_Click() If CapsLockOn = True Then MsgBox "Yes, Capslock is on!" Else MsgBox "No, Capslock is NOT on!" End If End Sub
Что-то совсем никак работать не хочет..... Сначала была ошибка в верхней строке: Private Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer Добавил PtrSafe - ошибка ушла. Но всё-равно не работает
Что-то совсем никак работать не хочет..... Сначала была ошибка в верхней строке: Private Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer Добавил PtrSafe - ошибка ушла. Но всё-равно не работаетmerzavec_78
Посмотрите ТУТ, может поможет У меня все работает Не гарантирую, что будет работать, но попробуйте так [vba]
Код
'Private Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer #If VBA7 Then Private Declare PtrSafe Function GetKeyState Lib "user32" (ByVal nVirtKey As LongPtr) As Integer #Else Private Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer #End If
Public Function CapsLockOn() As Boolean Dim iKeyState As Integer iKeyState = GetKeyState(vbKeyCapital) CapsLockOn = (iKeyState = 1 Or iKeyState = -127) End Function
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean) Me.TextBox1.BackColor = RGB(255, 255, 255) End Sub
Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer) If CapsLockOn = True Then Me.TextBox1.BackColor = RGB(255, 0, 0) Else Me.TextBox1.BackColor = RGB(255, 255, 255) End If End Sub
Посмотрите ТУТ, может поможет У меня все работает Не гарантирую, что будет работать, но попробуйте так [vba]
Код
'Private Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer #If VBA7 Then Private Declare PtrSafe Function GetKeyState Lib "user32" (ByVal nVirtKey As LongPtr) As Integer #Else Private Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer #End If
Public Function CapsLockOn() As Boolean Dim iKeyState As Integer iKeyState = GetKeyState(vbKeyCapital) CapsLockOn = (iKeyState = 1 Or iKeyState = -127) End Function
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean) Me.TextBox1.BackColor = RGB(255, 255, 255) End Sub
Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer) If CapsLockOn = True Then Me.TextBox1.BackColor = RGB(255, 0, 0) Else Me.TextBox1.BackColor = RGB(255, 255, 255) End If End Sub