- ベストアンサー
エクセルでNumLockキーを常時ONにする方法とは?
- エクセル2003で使用しているシステムがNumLockキーを頻繁にONとOFFに切り替えるため、テンキー入力時に予期せぬ位置に入力セルが移動してしまうことがあります。マクロボタンを使用して入力セルを元の位置に戻すことはできますが、エクセルがアクティブになっている時にNumLockキーを常時ONにする方法はありませんか?
- エクセル2003で使用しているシステムがNumLockキーを頻繁にONとOFFに切り替えるため、テンキー入力時に予期せぬ位置に入力セルが移動してしまうことがあります。マクロボタンを使用して入力セルを元の位置に戻すことはできますが、エクセルがアクティブになっている時にNumLockキーを常時ONにする方法はないでしょうか。この問題を解決するためには、VBAのコードを使用してNumLockキーを常時ONにするように設定する必要があります。
- エクセル2003で使用しているシステムがNumLockキーを頻繁にONとOFFに切り替えるため、テンキー入力時に予期せぬ位置に入力セルが移動してしまうことがあります。マクロボタンを使用して入力セルを元の位置に戻すことはできますが、エクセルがアクティブになっている時にNumLockキーを常時ONにする方法はないでしょうか。この問題を解決するためには、VBAのコードを使用してNumLockキーを常時ONにするように設定することができます。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
#1の回答者です。 #どうやら、キーボードが壊れているようですね。 >上部のボタンに様々な機能を割り当てていまして を読み落としていました。#1の仮想キーボードで、その都度、直すしかないかもしれません。イベント・ドリブン型は、キーの変わるタイミングを良く観察して選ぶと良いかと思います。シートに数式などがあれば、例えば、Calculate イベントでもよいと思います。
その他の回答 (1)
- Wendy02
- ベストアンサー率57% (3570/6232)
こんにちは。 どうやら、キーボードが壊れているようですね。 ソフトでやっても付け焼き刃かもしれません。キーボードをメーカーに見てもらったほうがよいのでは? >Set WshShell = CreateObject("WScript.Shell") >WshShell.SendKeys "{NUMLOCK}" これですと、トグルになっていますから、いずれにしても、KeyboardState を取らないといけないはずです。 もしかしたら、以下のものでも上手く行かないかもしれません。 '------------------------------------------- '標準モジュール/NumLock On のみ '------------------------------------------- 'Option Explicit 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 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 GetKeyboardState Lib "user32" (pbKeyState As Byte) As Long Private Declare Function SetKeyboardState Lib "user32" (lppbKeyState As Byte) As Long Const VK_NUMLOCK = &H90 Const KEYEVENTF_EXTENDEDKEY = &H1 Const KEYEVENTF_KEYUP = &H2 Const VER_PLATFORM_WIN32_NT = 2 Const VER_PLATFORM_WIN32_WINDOWS = 1 Public Sub NumLock_ON_Prc() Dim OSVersion As OSVERSIONINFO Dim NumLockState As Boolean OSVersion.dwOSVersionInfoSize = Len(OSVersion) GetVersionEx OSVersion Dim keys(0 To 255) As Byte GetKeyboardState keys(0) NumLockState = keys(VK_NUMLOCK) 'NumLock: Off to On If NumLockState <> True Then 'Win95/98 If OSVersion.dwPlatformId = VER_PLATFORM_WIN32_WINDOWS Then keys(VK_NUMLOCK) = 1 SetKeyboardState keys(0) 'WinNT/2K/XP ElseIf OSVersion.dwPlatformId = VER_PLATFORM_WIN32_NT Then 'Simulate Key Press keybd_event VK_NUMLOCK, &H45, KEYEVENTF_EXTENDEDKEY Or 0, 0 'Simulate Key Release keybd_event VK_NUMLOCK, &H45, KEYEVENTF_EXTENDEDKEY Or KEYEVENTF_KEYUP, 0 End If End If End Sub
お礼
お返事が遅れ申し訳ありません。 ご回答いただきありがとうございます。 さて、やはり難しそうですね。 参考サイトやお教えいただいた方法でじっくり検討してみます。 ありがとうございました。