• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセルマクロを割り当てたツールバー)

エクセルマクロを割り当てたツールバー

このQ&Aのポイント
  • エクセルマクロでCtrl+Tabと同じ動作をするツールバーを作成しました。今回はCtrl+Shift+Tab(ActivatePrevious)と同じ動作を実現したいと思っています。
  • 通常のボタンを押した場合はCtrl+Tabの機能が動きますが、Shiftを押しながらボタンを押すとCtrl+Shift+Tabの機能が動くようにしたいです。
  • 要件としてはShiftが押されているかどうかの情報を取得する必要があります。情報が取得できれば、マクロで処理を変更することができます。

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

  • ベストアンサー
  • arata
  • ベストアンサー率49% (139/279)
回答No.1

Windows APIのGetAsyncKeyStateを使うとキーボードの状態が取得できます。 実際のコーディングはこんな感じでしょうか。 Option Explicit Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer Public Sub ウインドウ切替() If GetAsyncKeyState(vbKeyShift) <> 0 Then 'Shiftキーが押されている ActiveWindow.ActivatePrevious Else 'Shiftキーは押されていない ActiveWindow.ActivateNext End If End Sub

Masazo-
質問者

お礼

回答ありがとうございます。 今までAPIという言葉に対し、目を伏せていました。 APIを使うと何でもできるってイメージがあるのですが、何ができるか知らない為、発想が行き着きません。 避けつづけるのも、そろそろ限界かもしれませんね。。。

Masazo-
質問者

補足

実際にAPI関数を宣言し、作成したところ実現しました。 ただ、エクセルマクロのみでは出来ないものなのでしょうか?