[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『図形選択後にIME起動』(やっぱり初歩)
いつもお世話になっています。
表題通りの事なのですが『マクロの記録』でやっても何も出て来ません。
特定の図形選択後にその図形ではIMEを有効とし、終了後は無効とする方法は何でしょうか?
< 使用 Excel:Excel2010、使用 OS:Windows8 >
セルなら、データの入力規則で制御できるんですけどねぇ。
(???) 2014/10/22(水) 14:57
こんなことでしょうか? API使っているので64BIT版でしたら、宣言部は注意してください。 新規ブックにて。
標準モジュール(Module1)に IMEのOn offを司るプロシジャー
'================================================================================= Option Explicit Declare Function ImmGetContext Lib "imm32.dll" (ByVal hwnd As Long) As Long Declare Function ImmSetOpenStatus Lib "imm32.dll" (ByVal hIMC As Long, ByVal b As Long) As Long Declare Function ImmReleaseContext Lib "imm32.dll" (ByVal hwnd As Long, ByVal hIMC As Long) As Long 'IME ON Sub CmdIMEOn() Dim hIMC As Long hIMC = ImmGetContext(Application.hwnd) Call ImmSetOpenStatus(hIMC, 1) Call ImmReleaseContext(Application.hwnd, hIMC) End Sub 'IME OFF Sub CmdIMEOff() Dim hIMC As Long hIMC = ImmGetContext(Application.hwnd) Call ImmSetOpenStatus(hIMC, 0) Call ImmReleaseContext(Application.hwnd, hIMC) End Sub
別の標準モジュール(Module2)に
'======================================================================== Option Explicit Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) Sub Select_shp() Dim shpnm As String shpnm = Application.Caller With ActiveSheet.Shapes(shpnm) .Select shpnm = .Name CmdIMEOn Do While select_chk(shpnm) DoEvents Sleep 50 Loop CmdIMEOff End With End Sub Function select_chk(ByVal shpnm As String) As Boolean On Error Resume Next select_chk = True If Selection.Name <> shpnm Then select_chk = False If Err.Number <> 0 Then select_chk = False On Error GoTo 0 End Function
また別の標準モジュール(Module3)に
Option Explicit Sub 準備() With ActiveSheet With .Rectangles.Add(100, 100, 100, 100) .OnAction = "Select_shp" End With With .Ovals.Add(225, 100, 100, 100) .OnAction = "Select_shp" End With End With End Sub
準備 を 実行してください。
四角形と円の図形が作成されます。
それぞれ図形を選択してください IMEがONになり、他(セル等)を選択すると IMEがOFFになるはずです。
(ichinose) 2014/10/23(木) 04:41
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.