• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセル NUMLOCKキーの常時オンについて)

エクセルでNumLockキーを常時ONにする方法とは?

このQ&Aのポイント
  • エクセル2003で使用しているシステムがNumLockキーを頻繁にONとOFFに切り替えるため、テンキー入力時に予期せぬ位置に入力セルが移動してしまうことがあります。マクロボタンを使用して入力セルを元の位置に戻すことはできますが、エクセルがアクティブになっている時にNumLockキーを常時ONにする方法はありませんか?
  • エクセル2003で使用しているシステムがNumLockキーを頻繁にONとOFFに切り替えるため、テンキー入力時に予期せぬ位置に入力セルが移動してしまうことがあります。マクロボタンを使用して入力セルを元の位置に戻すことはできますが、エクセルがアクティブになっている時にNumLockキーを常時ONにする方法はないでしょうか。この問題を解決するためには、VBAのコードを使用してNumLockキーを常時ONにするように設定する必要があります。
  • エクセル2003で使用しているシステムがNumLockキーを頻繁にONとOFFに切り替えるため、テンキー入力時に予期せぬ位置に入力セルが移動してしまうことがあります。マクロボタンを使用して入力セルを元の位置に戻すことはできますが、エクセルがアクティブになっている時にNumLockキーを常時ONにする方法はないでしょうか。この問題を解決するためには、VBAのコードを使用してNumLockキーを常時ONにするように設定することができます。

質問者が選んだベストアンサー

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

#1の回答者です。 #どうやら、キーボードが壊れているようですね。 >上部のボタンに様々な機能を割り当てていまして を読み落としていました。#1の仮想キーボードで、その都度、直すしかないかもしれません。イベント・ドリブン型は、キーの変わるタイミングを良く観察して選ぶと良いかと思います。シートに数式などがあれば、例えば、Calculate イベントでもよいと思います。

Haku46
質問者

お礼

お返事が遅れ申し訳ありません。 ご回答いただきありがとうございます。 さて、やはり難しそうですね。 参考サイトやお教えいただいた方法でじっくり検討してみます。 ありがとうございました。

その他の回答 (1)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.1

こんにちは。 どうやら、キーボードが壊れているようですね。 ソフトでやっても付け焼き刃かもしれません。キーボードをメーカーに見てもらったほうがよいのでは? >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   

参考URL:
http://support.microsoft.com/kb/177674/ja