
こんにちは、自身で調べてはみたのですが、特定のキーを押すというマクロは見つかったのですが、押しっぱなしというものが見つからず質問させて頂きました。
エクセルを操作する時に、離れたセルを選択する時やグループ化の際の選択にはCtrlキー+クリックを用いますが、この動作を再現するようなもの、もしくはCtrlキーを押している、押していないというスイッチのようなものを作ることは可能でしょうか?
ミスタイプでよく選択が解除されたりするため、スイッチなどがあれば確実だなーと思いました。
A 回答 (7件)
- 最新から表示
- 回答順に表示
No.7
- 回答日時:
#5の補足の補足的情報としては、元の私のコードは、ある種のマクロは、keyboard 上の NumLock を外してしまうので、取り付けたものです。
そのマクロのNum Lock版は、本体のマクロとセットで使っていますから、そちらは、何千回と使われているものです。
昨日今日できたものではないのですが、Control キーは事情が違いますので、AsyncKeyコマンドで、Control キーを監視する方法が考えられます。
そこで、押した・押さないは感知できますから、まだ、もう少し工夫の余地はあります。
もう一つは、こちらは、32bit だからですが、64bit では、
Declare の後に、PtrSafe を加える必要があります。
その技術を応用すれば、完全な形にはなるとは思いますが、質問者さんの多くの中からどれがよいという恣意的な選択肢の中で終わってしまうだけでは、このコードは内容的に重すぎますから、深追いはやめておきます。もう少し、工夫の必要はあるのは知っています。
しかし、個人的な興味もあり、改良を加えてみると、結局、Windowsの設定の固定キーと考え方が近寄っていくわけで、そのぐらいなら、物理的にキーボードのコントロールキーにテープを貼り付けてしまってもよいかとも思えてくるのです。実際、この前から、キーボードが調子が悪くて、左シフトキーを中心として、押した状態が戻らなくなり、ついにこの開発の最中にキーボードを交替させました。
また、一頃は流行ったキーボードSwapで、シフトとCtrl キーを入れ替えても良いのではないかと思います。方法はいくつもありますから、ここの質疑の中だけでなく、適当なものを選べばよいと思います。
No.6
- 回答日時:
Ctrlキーを押しっぱなしにしなくても、離れたセルを連続して選択できれば良いのですよね?
マクロ、トグルボタン等のキーワードが出ているのでユーザフォームとかでも大丈夫ですよね?
まず、ユーザフォームを作って、その上にトグルボタンを配置します。とりあえず、名前はデフォルトのままとします。
その上で、次のVBAを書いてください。
使い方ですが、まず、標準モジュールの sample を起動します。すると、ユーザフォームが表示されます。
トグルボタンをオンにすると、連続してセルが選択できるようになります。トグルボタンをオフにすると解除されます。
【Sheetモジュール】
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If myRng = "" Then Exit Sub
Application.EnableEvents = False
myRng = Target.Address & "," & myRng
Range(myRng).Select
Application.EnableEvents = True
End Sub
【UserForm1モジュール】
Private Sub ToggleButton1_Click()
If ToggleButton1.Value Then
myRng = Selection.Address
Else
myRng = ""
End If
End Sub
【標準モジュール】
Public myRng As String
Sub sample()
UserForm1.Show vbModeless
End Sub
No.5
- 回答日時:
こんばんは。
一般的には、Windows の設定-簡単操作-[キーボード]クリック
Windows 10 ですが、他のバージョンでも似た機能があります。
「Ctrl、Alt、Shift、Windowsロゴキーを2回続けて押すとそのキーをロックする」
ここを[オン]にします。(今のところは、指はちゃんと動いているようですが、近いうちには、私もお世話にならなければならないキーかもしれません。これは、障がい者用のキーです。)
たぶん、フリーソフトウェアも出ているかと思います。中身は、大した違いはないでしょうけれども、VBAでは反応が鈍いのです。
もし、マクロで、それをしようとすると以下のようになります。
「君子危うきに近寄らず」と思うなら、以下のようなものは使わないほうが懸命かもしれません。昔、使っていたものを見直して設定しなおしました。もう、今の私の能力では、以下のようなコード自体は書けません。
トグルが上手くいかないので、行き着いたものが、CommandButton なのでした。つまり、コントロールキーを押し続けていることになるので、通常では、Off状態には戻らないのです。
>チェックボックスかトグルボタン
Ctrl キーに反応するオブジェクトでないといけません。
シートにActive X のコマンドボタンを付けます。
Private Sub CommandButton1_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
If Shift = 0 Then
Call Command_ControlKey(True)
Else
Call Command_ControlKey(False)
End If
End Sub
'----------------
標準モジュール
Option Explicit
'API declarations:
Public Declare Function GetVersionEx Lib "kernel32" Alias "GetVersionExA" (lpVersionInformation As OSVERSIONINFO) As Long
Public Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
Public Declare Function GetKeyboardState Lib "user32" (pbKeyState As Byte) As Long
Public Declare Function SetKeyboardState Lib "user32" (lppbKeyState As Byte) As Long
'Constant declarations:
Public Const VK_CONTROL = &H11
Public Const KEYEVENTF_EXTENDEDKEY = &H1
Public Const KEYEVENTF_KEYUP = &H2
Public Const VER_PLATFORM_WIN32_WINDOWS = 1
Public Const VER_PLATFORM_WIN32_NT = 2
Public Type OSVERSIONINFO
dwOSVersionInfoSize As Long
dwMajorVersion As Long
dwMinorVersion As Long
dwBuildNumber As Long
dwPlatformId As Long
'Maintenance string for PSS usage
szCSDVersion As String * 128
End Type
Public Declare Sub Sleep Lib "kernel32.dll" (ByVal dwMilliseconds As Long)
Public Declare Function MessageBoxTimeoutA Lib "user32" (ByVal hWnd As Long, _
ByVal lpText As String, ByVal lpCaption As String, ByVal uType As Long, ByVal _
wLanguageId As Long, ByVal dlliseconds As Long) As Long
Public Sub Command_ControlKey(ctrlFlg)
'''キーを監視
Dim OsVer As OSVERSIONINFO
Dim ControlKeyState As Boolean
OsVer.dwOSVersionInfoSize = Len(OsVer)
GetVersionEx OsVer
Dim keys(0 To 255) As Byte
Sleep 1000
GetKeyboardState keys(0)
ControlKeyState = keys(VK_CONTROL)
If OsVer.dwPlatformId = VER_PLATFORM_WIN32_NT Then
'If Not ControlKeyState = False Then
If ctrlFlg = False Then
'Simulate Key Release
keybd_event VK_CONTROL, &H45, KEYEVENTF_EXTENDEDKEY Or KEYEVENTF_KEYUP, 0
MessageBoxTimeoutA 0&, "解除されました。", "messagebox", vbMsgBoxSetForeground, 0, 1000
Else
'Simulate Key Press
keybd_event VK_CONTROL, &H45, KEYEVENTF_EXTENDEDKEY Or 0, 0
MessageBoxTimeoutA 0&, "設定されました。", "messagebox", vbMsgBoxSetForeground, 0, 1000
End If
Else
MsgBox "現在旧OSについてはコードを示しません。", vbExclamation
End If
End Sub
No.4
- 回答日時:
Windowsパソコンなら「コンピュータの簡単操作センター」から「固定キー機能を有効にする」ことで対応できませんか。
・・・
てか、Ctrlキーって普通はキーボードの一番左下(と一番右下)にあるので Shiftキーよりも操作しやすいはずですよ。
・・・余談・・・
自分ならゲーム用の左手キーボードに「Ctrl+マウスクリック」を割り当てて、そのボタンを押している間はクリック状態を保持する設定にします。
ゲームだけでなく各種ソフトでショートカットキーなどの設定を割り当てて便利に使っています。
No.3
- 回答日時:
ミスタイプで選択が解除されるという意味が分かりません。
>離れたセルを選択する時やグループ化の際の選択にはCtrlキー+クリックを用いますが、
>この動作を再現するようなもの
[Shift]+[F8]キーで「選択範囲に追加」ということができます。
[Esc]キーまたは[Shift]+[F8]キーで解除されます
また、セル範囲を選択しておいて名前を定義すれば、
名前ボックスからの選択でセルが選択されます
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- マウス・キーボード キーボード設定で困っています。長文です。 2 2022/12/10 12:44
- その他(パソコン・周辺機器) PCの操作中に画面がフリーズしましたマウスを動かしても反応しないし「Ctrl」キーと「Alt」キーと 2 2022/04/17 10:09
- その他(IT・Webサービス) Google日本語入力の操作方法 一度確定した後の訂正方法 1 2023/06/17 16:03
- その他(IT・Webサービス) AutoHotKeyで、キーボードにマウスの右クリックを割り当てられる? 1 2023/03/30 00:23
- Visual Basic(VBA) VBAコードを張り付け後のエクセルの進め方 2 2023/02/07 18:24
- Visual Basic(VBA) エクセルのマクロについて教えてください マクロを実行すると メッセージボックスが表示されて okをク 4 2023/07/05 19:32
- Word(ワード) IMEパッドがショートカットキーで開かないのですが。。。 5 2023/06/11 09:23
- Gmail GmailではメールをDelキーで削除可能でしょうか? 1 2022/08/17 10:43
- Excel(エクセル) エクセルでの行列の選択について 1 2022/06/01 17:01
- Excel(エクセル) Excel フィルタ後のコピー貼付けと可視セルの関係について 3 2023/02/07 16:42
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一番好きなみそ汁の具材は?
- ・泣きながら食べたご飯の思い出
- ・「これはヤバかったな」という遅刻エピソード
- ・初めて自分の家と他人の家が違う、と意識した時
- ・いちばん失敗した人決定戦
- ・思い出すきっかけは 音楽?におい?景色?
- ・あなたなりのストレス発散方法を教えてください!
- ・もし10億円当たったら何に使いますか?
- ・何回やってもうまくいかないことは?
- ・今年はじめたいことは?
- ・あなたの人生で一番ピンチに陥った瞬間は?
- ・初めて見た映画を教えてください!
- ・今の日本に期待することはなんですか?
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・【お題】大変な警告
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・最強の防寒、あったか術を教えてください!
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelで指定行以降を非表示にす...
-
カーソルキーで文字間を移動し...
-
ご質問です。エクセルの表で、...
-
移動するとコピーしてしまう
-
パワーポイントのデザインの移...
-
文字列の選択範囲が勝手に広が...
-
カーソルが左に移動しないんです?
-
Excelのチェックボックスかトグ...
-
フォルダ内のファイルを自由に...
-
エクセルのカーソルの移動速度...
-
Excel 列/行の範囲固定方法を...
-
カーソルが『|』ではなく『■』...
-
スマホでの文字削除方法で
-
MS-IMEでのファンクショ...
-
VLC media player
-
ワード2007で図の挿入のショー...
-
word でいつのまにか網掛けが…
-
ワードの文章の前後にカギカッ...
-
Windows10(Surface)でFnキー...
-
エクセルでEnterキーで下のセル...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ご質問です。エクセルの表で、...
-
Excelで指定行以降を非表示にす...
-
カーソルキーで文字間を移動し...
-
スマホでの文字削除方法で
-
パワーポイントのデザインの移...
-
文字列の選択範囲が勝手に広が...
-
wordで円を3つ書き、バランス...
-
カーソルが『|』ではなく『■』...
-
ワードの文章の前後にカギカッ...
-
エクセルのカーソルの移動速度...
-
文字の色を変えるショートカッ...
-
windows8.1のエクスプローラで...
-
WORDの塗りつぶし ショートカット
-
フォルダ内のファイルを自由に...
-
移動するとコピーしてしまう
-
カーソルが左に移動しないんです?
-
shiftキーでの範囲選択について
-
フォントの色をしょっちゅう変...
-
選択が上手くできない
-
Web上のプルダウンメニュー...
おすすめ情報