MS ACCESSに関する質問です。

フォームにチェックボックスを作ったのですが、入力が日本語入力になっている場合、スペースを押してもチェックが入りません。テキストボックスの入力などは日本語入力を指定できるのですが、チェックボックスにはそれがありません。
そこで、チェックボックスにフォーカスが移るたびに日本語入力を切るにはどうすればよいのでしょうか?単純にチェックボックスにフォーカスが移った際キーボードから入力ができればそれでよいのですが。

回答の条件
  • URL必須
  • 1人5回まで
  • 登録:2006/10/07 08:56:00
  • 終了:2006/10/07 20:43:14

回答(1件)

id:ardarim No.1

ardarim回答回数896ベストアンサー獲得回数1442006/10/07 12:16:31

ポイント60pt

こちらにVBAで日本語入力のON/OFFを切り替える方法についての説明があります。(Excelですが、Accessでも同じです)


[XL95]日本語入力システムのオン/オフを制御する方法


以下サンプルです。


(1)データベースウィンドウの[モジュール]タブで[新規作成]し、標準モジュールウィンドウを開く。

(2)以下のコードを入力する

Public Declare Function ImmGetContext Lib "imm32.dll" (ByVal hWnd As Long) As Long
Public Declare Function ImmReleaseContext Lib "imm32.dll" (ByVal hWnd As Long, ByVal himc As Long) As Long
Public Declare Function ImmSetOpenStatus Lib "imm32.dll" (ByVal himc As Long, ByVal b As Long) As Long

' IMEControl Sub
' 書式: IMEControl(nMode As Long)
' 解説: IME を制御します。
' nMode
' 0 OFF
' 1 ON

Public Sub IMEControl(ByVal nMode As Long)
    Dim hWnd As Long, IMC As Long, ret As Long
    hWnd = Application.hWndAccessApp
    IMC = ImmGetContext(hWnd)
    ret = ImmSetOpenStatus(IMC, nMode)
    ret = ImmReleaseContext(hWnd, IMC)
End Sub

(3)モジュールウィンドウを閉じ、保存する

(4)フォームのデザインビューでチェックボックスをクリックする

(5)右クリックしプロパティを表示する

(6)[イベント]タブをクリックし、[フォーカス取得時]をクリックする

(7)入力欄右側の[▼]ボタンを押し、[イベントプロシージャ]を選択する

(8)入力欄右側の[...]ボタンを押し、チェックボックスのEnterハンドラに移動する。

(9)Enterハンドラで以下のコードを入力する

    Call IMEControl(0)
id:Ethinos

これはだいぶ難しそうですね(;´▽`A``

でも頑張ってやってみます。どうもありがとうございました。

2006/10/07 20:43:03
  • id:ardarim
    基本的にはコピペするだけなので、慣れてしまえばそんなに難しくはないと思いますよ。
    頑張ってください!
    標準モジュールの部分は、何が書いてあるかを理解する必要はありません。(もちろん、理解していたほうがよいですが。)
    一度書いておけば、あとは複数のチェックボックスで(4)以降の手続きをやるだけです。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません