[[20141022143619]] 『図形選択後にIME起動』(やっぱり初歩) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『図形選択後に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.