![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
表題の質問をさせていただきます。
仕事場に入っているシステムがキーボード上部のボタンに様々な機能を割り当てていまして、システム独自の機能を有するように設計されています。
割り当てられているのは↓です。
デスクトップ用キーボードで、ファンクションキーやテンキー上部のキー(Num / * -)
このシステムを利用しながらエクセルも同じPCで稼動させています。
ファンクションキーはさほど困らないのですが、NumLockキーをシステムで利用するので頻繁にONになったりOFFになったりします。
システムからエクセルに変更をした際にNumLockがオフになっていることが確率的に半数あり、その際はテンキー入力をすると あらぬ位置に入力セルが飛んでいってしまい困っています。
あらぬ位置に飛んでいってしまったときはマクロ登録してあるボタンで所定の位置に戻ってくるように設定しています。
ウインドウ枠の固定で画面を上下に分割していて 上部にマクロボタンを設置してあります。
いろいろと調べてWorkbookやWorksheetのActivateイベントに↓を記述しました。
Set WshShell = CreateObject("WScript.Shell")
WshShell.SendKeys "{NUMLOCK}"
しかし、システムから切り替わった場合には動作しませんでしたし、エクセル内での動きとしてもシートチェンジ毎にONとOFFになってしまい、いい動きにはなりませんでした。
システムから切り替わったタイミングをと思い、SelectionChangeにも記述しましたが、当然ながらクリックするたびにON・OFFになってしまい…。
どうにか、エクセルがアクティブになっている時は NumLockを常時ONにする方法はないでしょうか。
お知恵を拝借したく投稿しました。
エクセル2003です。よろしくお願いいたします。
No.2ベストアンサー
- 回答日時:
#1の回答者です。
#どうやら、キーボードが壊れているようですね。
>上部のボタンに様々な機能を割り当てていまして
を読み落としていました。#1の仮想キーボードで、その都度、直すしかないかもしれません。イベント・ドリブン型は、キーの変わるタイミングを良く観察して選ぶと良いかと思います。シートに数式などがあれば、例えば、Calculate イベントでもよいと思います。
お返事が遅れ申し訳ありません。
ご回答いただきありがとうございます。
さて、やはり難しそうですね。
参考サイトやお教えいただいた方法でじっくり検討してみます。
ありがとうございました。
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
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- マウス・キーボード テンキーの設定がおかしくなっています。 5 2023/08/09 15:35
- Excel(エクセル) CSVファイルがカンマ区切りにならない。対処法を教えていただきたいです。 仕事でSMS一斉送信ができ 2 2022/07/01 21:24
- マウス・キーボード キーボード Oキーを押すとプルダウンメニューが出る 4 2022/09/08 14:48
- Visual Basic(VBA) エクセルマクロでアニメを作る方法を教えてください。 1 2023/02/07 14:27
- マウス・キーボード キーボード設定で困っています。長文です。 2 2022/12/10 12:44
- Google Maps パソコンの地図サイトなどで 3 2023/02/18 23:06
- Windows 10 Windows10の不具合(Critical Process Died) 9 2022/04/19 21:11
- docomo(ドコモ) アンドロイド、ワイファイが勝手に切られる 2 2023/07/09 20:28
- マウス・キーボード キーボードのCaps Lockキーと変換キーの挙動がおかしくなりました。 4 2022/09/04 22:44
- Excel(エクセル) マクロで謎の現象が起きていて困ってます。 エクセルで作ったボタンを押すとマクロが動いて処理をしてくれ 3 2023/06/22 17:28
このQ&Aを見た人はこんなQ&Aも見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
エクセルVBAでNumLockキーの状態を確認する
Excel(エクセル)
-
vbscriptでNUMLOCK判定したい
その他(プログラミング・Web制作)
-
ドロップダウンリスト 自動表示したい
Excel(エクセル)
-
-
4
SendKeysについて
Visual Basic(VBA)
-
5
Enterキーでマクロを起動さす。
その他(ソフトウェア)
-
6
エクセルVBAでIME入力モードの制御
Excel(エクセル)
-
7
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
8
VBAで既に開いている別アプリケーションのオブジェクトを得る
Visual Basic(VBA)
-
9
VBAでテキストボックス内の編集をする方法
Visual Basic(VBA)
-
10
【Excel VBA】CSV取込時、数字の先頭の0を消えないようにするには?
Excel(エクセル)
-
11
Excel VBA マクロ実行中のみテンキー操作できるようにしたい
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Enter キーを叩いても改行しな...
-
BIOS画面でキーが使えない
-
キータッチが固いのです
-
キーボードからの文字入力が変
-
変換キー、スペースキーが反応...
-
CTRLキーが使えません。
-
Deleteキーが反応しません
-
変な音が・・
-
キーボードに「Home」「End」を...
-
キーボードのエンターとバック...
-
PC起動時に「タタタンタンタタ...
-
F11で音声オンオフをしたい。FN...
-
パソコンのキーボードの設定が...
-
ノートPCで突然一部キーが打て...
-
パソコンのキーボードの掃除
-
[大至急]キーボードが反応しない!
-
デュアルディスプレイで二つの...
-
古いパソコンのhddを取り出して...
-
カーソルが画面の外まで動いて...
-
UltraVNC login後、サーバ側画...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Enter キーを叩いても改行しな...
-
Deleteキーが反応しません
-
BIOS画面でキーが使えない
-
キーボードに「Home」「End」を...
-
キータッチが固いのです
-
起動時のパスワード入力ができない
-
escキーだけが利きません。他の...
-
エクセル NUMLOCKキーの常時オ...
-
キーボードのエンターとバック...
-
ウィンドウズ操作
-
Windows7でC、V、H、deleteキー...
-
キーボードがkが2にlが3になり...
-
変換キー、スペースキーが反応...
-
キーボードの特定のキーを操作...
-
[大至急]キーボードが反応しない!
-
キーボードのキーの中にあるバ...
-
一部のキーが打てない・・・。
-
ブラウザの更新ボタンってどこ...
-
キーボード故障?右側の数字の...
-
特定キーが押されっぱなしになる
おすすめ情報