Last Updated 2012/12/15
 Programming Tips  Office  索 引 
VBA 隠しコマンド
2012/12/15

アクセスで作ったアプリなどは mdb を起動するとオートマクロが走って,終了させるとそのまま終了してしまう。
そのままコード修正とかしたい時は非常に面倒。
だから終了ボタンを押す時に,こんな仕組みを用意しておくと便利。

終了ボタンを押す時に,CTRL + ALT + SHIFT が押されていればデザインモードにするって感じ。
その判断に使うのが以下の関数。

あとアプリケーションなどでユーザに公開しない機能などに使用出来る。
このキー押しながらラベルをダブルクリックとか,普段しない動作に対して開発者モードを割り当てる。
便利です。



' Win32API キーボードの仮想キーの状態を取得する
Declare Function GetKeyboardState Lib "user32" (pbKeyState As Byte) As Long
' キーコード定数
Public Const VK_SHIFT = &H10    ' Shift
Public Const VK_CONTROL = &H11  ' Ctrl
Public Const VK_MENU = &H12     ' Alt
Public Const VK_LSHIFT = &HA0   ' NT 系 OS only 左 Shift
Public Const VK_RSHIFT = &HA1   ' NT 系 OS only 右 Shift
Public Const VK_LCONTROL = &HA2 ' NT 系 OS only 左 Ctrl
Public Const VK_RCONTROL = &HA3 ' NT 系 OS only 右 Ctrl


'*****************************************************************************
'  デバッグモード判断
'    終了時,CTRL + ALT + SHIFT が押されて終了したらデバッグモードとして,
'    MDB を終了させない.
'
'  return : Boolean : True  : デバッグモード
'                     False : リリースモード
'*****************************************************************************
Function bDebugMode() As Boolean
    Dim abyKeyState(255) As Byte

    bDebugMode = False

    GetKeyboardState abyKeyState(0)
    If CBool(abyKeyState(VK_SHIFT) And &H80) And _
        CBool(abyKeyState(VK_CONTROL) And &H80) And _
        CBool(abyKeyState(VK_MENU) And &H80) Then
        bDebugMode = True
    End If

End Function


参照
前後のTips
VBA 隠しコマンド

DSS ProgrammingTipsCGI Ver1.04