これは以前に注目されたことは知っていますが、解決できません。サブを呼び出すボタンがあり、そのサブでnumlockが常にオンになっていることを確認したい。初めて、つまり numlock がオフの場合、オンになります。すでにオンになっている場合は、ボタンを 1 回または 2 回クリックすると numlock がオンのままになりますが、3 回クリックすると numlock がオフになります。もう一度クリックするとオフになります。もう一度クリックすると、再びオンになります。したがって、3回クリックするたびにオフになります。修正方法がわかりません。Excel 2019 ビットと Windows 10 64 ビットを使用しています。コードは次のとおりです。
Private Declare PtrSafe Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer
Private Const kCapital = 20
Private Const kNumlock = 144
Public Function CapsLock() As Boolean
CapsLock = KeyState(kCapital)
End Function
Public Function NumLock() As Boolean
NumLock = KeyState(kNumlock)
End Function
Private Function KeyState(lKey As Long) As Boolean
KeyState = CBool(GetKeyState(lKey))
End Function
Public Sub ToggleNumlock(choice As Boolean)
Application.Volatile
If choice = True Then
If NumLock = False Then SendKeys "{NUMLOCK}", True
Else
If NumLock = True Then SendKeys "{NUMLOCK}", True
End If
End Sub
私が持っているボタンによってトリガーされたサブで:
Application.SendKeys "{F2}"
そして、私が持っている直後
If NumLock = False Then
ToggleNumlock (True)
End If
トラブルの原因は Sendkeys でしょうか? 必要なので、回避策はありますか?ありがとうございました。
私のコードへの更新:
ActiveSheet.Range(CurrentCell).Value = "="
ActiveSheet.Range(CurrentCell).Select
Application.SendKeys "{F2}", True
Application.SendKeys "=", True
Application.SendKeys "{F2}"
numlock on off などに関するすべてのコードを削除しました。これを試してみると、少なくとも私のマシンでは今のところ機能します。キーを 2 回押すだけです。明日、オフィスのマシンでこれを確認します。
UPDATED 2021-07-19 私のオフィス (Windows 64 ローカライズされたイタリア語、Excel 2010) では、numlock を切り替えるのと同じ問題がありますが、テンキーのコンマもポイントになります (イタリアでは 3.14 ではなく 3.14 です)。あきらめる。私を助けようとしたすべての人に感謝します。MS は実際に送信キーを修正する必要があります。