'セル移動を制御するサンプルマクロ3 'MakeSheet3を実行してサンプルシートを作成してください。 Option Explicit Sub MakeSheet3() Worksheets.Add With Range("A1") .Value = "Enterキーでセル移動するサンプルシート" With .Font .ColorIndex = 5 .Bold = True End With End With Range("A2").Value = _ "このシートではマクロを使い、Enterキーの動作をセル単位に制御しています。" Range("A3").Value = _ "IMEのオン・オフも行います。(ただしWindowsでのみ動作します。)" Range("A5").Value = "項目1" Range("C5").Value = "項目2" Range("A7").Value = "項目3" Range("C7").Value = "項目4" Range("A9").Value = "項目5" Range("C9").Value = "項目6" With Range("B5,D5,B7,D7,B9,D9") .BorderAround Weight:=xlThick, ColorIndex:=14 .Locked = False End With Range("B5").Select MyOnSheetActivate3_On ActiveSheet.Protect , True, True, True End Sub 'アクティブシートに自動実行マクロを登録するマクロ Sub MyOnSheetActivate3_On() ActiveSheet.OnSheetActivate = "MyOnSheetActivate3" ActiveSheet.OnSheetDeactivate = "MyOnSheetDeactivate3" MyOnSheetActivate3 End Sub 'アクティブシートの自動実行マクロを解除するマクロ Sub MyOnSheetActivate3_Off() ActiveSheet.OnSheetActivate = "" ActiveSheet.OnSheetDeactivate = "" MyOnSheetDeactivate3 End Sub 'キーの割り当てをするマクロ(自動実行マクロ) Sub MyOnSheetActivate3() Application.OnKey "{ENTER}", "MyOnKeyEnter3" Application.OnKey "{RETURN}", "MyOnKeyEnter3" Application.OnKey "+{ENTER}", "MyOnKeyShiftEnter3" Application.OnKey "+{RETURN}", "MyOnKeyShiftEnter3" End Sub 'キーの割り当てを解除するマクロ(自動実行マクロ) Sub MyOnSheetDeactivate3() Application.OnKey "{ENTER}" Application.OnKey "{RETURN}" Application.OnKey "+{ENTER}" Application.OnKey "+{RETURN}" End Sub 'Enterで起動するマクロ Sub MyOnKeyEnter3() Dim a As Variant, ime As Variant Dim i As Integer, m As Integer, n As Integer Dim s As String 'セル移動の定義 a = Array("B5", "D5", "B7", "D7", "B9", "D9") 'IME設定の定義(1:On 2:Off) ime = Array(2, 1, 2, 1, 2, 1) m = LBound(a) n = UBound(a) - 1 s = ActiveCell.Address(False, False) For i = m To n If a(i) = s Then Range(a(i + 1)).Select SetIME ime(i + 1) Exit Sub End If Next Range(a(m)).Select SetIME ime(m) End Sub 'Shift+Enterで起動するマクロ Sub MyOnKeyShiftEnter3() Dim a As Variant, ime As Variant Dim i As Integer, m As Integer, n As Integer Dim s As String 'セル移動の定義 a = Array("B5", "D5", "B7", "D7", "B9", "D9") 'IME設定の定義(1:On 2:Off) ime = Array(2, 1, 2, 1, 2, 1) m = LBound(a) + 1 n = UBound(a) s = ActiveCell.Address(False, False) For i = m To n If a(i) = s Then Range(a(i - 1)).Select SetIME ime(i - 1) Exit Sub End If Next Range(a(n)).Select SetIME ime(n) End Sub 'IMEのオンオフを行うマクロ(Windowsでのみ動作) Sub SetIME(ByVal arg1 As Integer) Select Case arg1 Case 1 If IMEStatus = 2 Then SendKeys "%{KANJI}" Case 2 If IMEStatus <> 2 Then SendKeys "%{KANJI}" End Select End Sub