|
> まるっきしサラにして、InputBox関数のIMEを制御するような手法を出して頂けたら。
InputBoxはExcelアプリに対してModal動作をしますから、
InputBox状態に入る前にExcelのIME状態を希望の状態に
設定し、処理後に前の状態に戻す。
この手順でよろしいかと思います。
とりあえず、標準モジュールでのテストです。
(Sample)
Declare Function ImmGetContext Lib "Imm32" _
(ByVal Hwnd As Long) As Long
Declare Function ImmReleaseContext Lib "Imm32" _
(ByVal Hwnd As Long, _
ByVal Himc As Long) As Long
Declare Function ImmGetOpenStatus Lib "Imm32" _
(ByVal Himc As Long) As Long
Declare Function ImmSetOpenStatus Lib "Imm32" _
(ByVal Himc As Long, _
ByVal fOpen As Long) As Long
Sub aTest()
Dim Hwnd As Long
Dim IMC As Long
Dim Flag As Long
Hwnd = Application.Hwnd
IMC = ImmGetContext(Hwnd)
' 現在のIMEOnOff状態を取得...
Flag = ImmGetOpenStatus(IMC)
' IME Onの状態に設定...
ImmSetOpenStatus IMC, 1&
ImmReleaseContext Hwnd, IMC
Application.InputBox "名前を入力してください。"
' 当初のIME状態に復帰 ...
IMC = ImmGetContext(Hwnd)
ImmSetOpenStatus IMC, Flag
ImmReleaseContext Hwnd, IMC
End Sub
|
|