• ベストアンサー

excelのInputBoxで日本語入力OFFにしたい

タイトルの通りです excelのInputBoxで日本語入力OFFにしたいのですが、 VBAでIME(MS-IME)を制御できるのでしょうか。 セルへの入力であれば、入力規則で出来るので、 イメージとしては、そんな感じです。

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

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.1

こんばんは。 詳しい状況が分らないので、あまり正確にVBAのコードを書くことが出来ません。IMEをどこで使うかによっても変ってきます。なお、入力規則とはかなり違います。 まあ、一般的な方法を二つ書いておきます。 '-------------------------------------------- Sub IMEControl1() Dim Ret As String  If IMEStatus <> vbIMEModeOff Then    SendKeys "%{kanji}"  End If  Ret = Application.InputBox("入力してください。", Type:=2)  If Ret <> "" Then     MsgBox "IME-OFF with SendKey :" & Ret  End If End Sub '次は、Win32 API関数を使った方法です。 '-------------------------------------------- Private Declare Function ImmGetContext Lib "imm32.dll" (ByVal hWnd As Long) As Long Private Declare Function ImmReleaseContext Lib "imm32.dll" (ByVal hWnd As Long, ByVal hImc As Long) As Long Private Declare Function ImmSetOpenStatus Lib "imm32.dll" (ByVal hImc As Long, ByVal b As Long) As Long Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As Long) As Long '-------------------------------------------- Sub IMEControl2()  Dim hImc As Long  Dim myHWnd As Long  Dim Ret As String   'バージョンチェック   If Application.Version > 9 Then   myHWnd = Application.hWnd   Else   myHWnd = FindWindow("XLMAIN", 0)   End If   hImc = ImmGetContext(myHWnd)   'IMEをOFF   If hImc <> 0 Then   Call ImmSetOpenStatus(hImc, 0)   Call ImmReleaseContext(myHWnd, hImc)   End If   Ret = Application.InputBox("入力してください。", Type:=2)   If Ret <> "" Then     MsgBox "IME-OFF with API :" & Ret   End If End Sub

noname#16474
質問者

お礼

コードまでありがとうございました SendKeys で対応することにしました

その他の回答 (1)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

>日本語入力OFF (1)入力モードの初期値を英数にするということですか (2)結果入力値が全角ではない内容にしたいということですか。 (2)だと回答は大幅に変わるでしょう。 >セルへの入力であれば、入力規則で出来るので これも(1)のはず。 マクロの記録ではValidationの .IMEMode = xlIMEModeAlphaと出てきます。 TextBoxなどコントロールにはプロパティにIMEModeがあります。 InputBox関数自体にIMEを制御する機能はありません。 その対策として http://www.officetanaka.net/excel/vba/tips/tips16.htm に逆のケース(ONにするケース)が載ってます。 APIを使う例も。 (ただし私のケースでは、SendKeys ("{kanji}")はOnにならずOffになった。) 対策以下は自信なし。

noname#16474
質問者

お礼

>(1)入力モードの初期値を英数にするということですか こちらです。 SendKeys で対応することにしました。 参考URLありがとうございました。 >InputBox関数自体にIMEを制御する機能はありません と書いてあり、今回の質問の回答になりました。

関連するQ&A

専門家に質問してみよう