Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


36170 / 76738 ←次へ | 前へ→

【45751】Re:Enterだけで移動できる?
回答  Kein  - 07/1/13(土) 16:06 -

引用なし
パスワード
   ▼じろう さん:
あー・・どうも。イベントの動作に関しては理解できたようですね。
で、今までは"特定の一枚のシート"でOnKeyを設定することを前提に
していましたが
>もう1sheetあるのですが
ということなら、全体の構成を変更する必要があります。
即ち

1 OnKeyを設定するマクロは、ThisWorkbookモジュールの Sheet_Activate
  イベントにする。解除するマクロも Sheet_Deactivate にする。
2 Private Sub JmpCell は、改造して標準モジュールへ移動

ということになります。で、現在仮に "Sheet1" と "Sheet2" のシートモジュール
にそれらのマクロを入れているとして、まずそれら全てのマクロを削除して下さい。
そして標準モジュールに以下のマクロを入れます。

Sub JmpCell2(Snm As String)
  If TypeName(Selection) <> "Range" Then Exit Sub
  With ActiveCell
   Select Case .Column
     Case 3
      If Snm = "Sheet1" Then
        .Offset(, 1).Select '★追加
      Else
        .Offset(1).Select
      End If
     Case 5
      If Snm = "Sheet2" Then
        .Offset(, 2).Select '★ココ修正
      Else
        .Offset(1).Select
      End If
     Case 4, 6
      .Offset(, 2).Select
     Case 8
      If Snm = "Sheet1" Then
        .Offset(, 1).Select '★追加
      Else
        .Offset(1).Select
      End If
     Case 11
      .Offset(1, -8).Select
     Case 22
      If Snm = "Sheet2" Then
        .Offset(1, -21).Select '★ココ修正
      Else
        .Offset(1).Select
      End If
     Case 129
      If .Row = 14 Then
        .Offset(40, -3).Select
      Else
        .Offset(1).Select
      End If
     Case 126
      Select Case .Row
        Case 54, 56, 58, 60: .Offset(, 11).Select
        Case Else: .Offset(1).Select
      End Select
     Case Else
      .Offset(1).Select
   End Select
  End With
End Sub

上のコードは、あなたがUPしたコードと比較してみれば分かると思いますが

1 Sheet1 の特定の列のみで動く部分
2 Sheet2 の特定の列のみで動く部分
3 Sheet1,Sheet2 共通の列で動く部分

で再構成しています。つまり変数 Snm はアクティブシートの名前になります。
いちおう、イベントマクロ以外でOnKeyの設定を解除できるようにするため、
以下のマクロも標準モジュールに入れておいて下さい。

Sub Release_KeyAction()
  With Application
   .OnKey "{ENTER}"
   .OnKey "~"
  End With
End Sub

次に ThisWorkbookモジュール に以下のマクロを入れます。

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
  Dim PrcSet As String
 
  If Sh.Name = "Sheet1" Or Sh.Name = "Sheet2" Then
   PrcSet = "'JmpCell2" & Chr(34) & Sh.Name & Chr(34) & "'"
   With Application
     .OnKey "{ENTER}", PrcSet
     .OnKey "~", PrcSet
   End With
  End If
End Sub

Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
  If Sh.Name = "Sheet1" Or Sh.Name = "Sheet2" Then
   With Application
     .OnKey "{ENTER}"
     .OnKey "~"
   End With
  End If
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
  With Application
   .OnKey "{ENTER}"
   .OnKey "~"
  End With
End Sub

もちろん Sheet_Activate, Sheet_Deactivate イベントマクロに共通する
>If Sh.Name = "Sheet1" Or Sh.Name = "Sheet2" Then
というコードは JmpCell2 と同様に、そちらで正しくシート名を変更して下さい。

0 hits

【45740】Enterだけで移動できる? じろう 07/1/13(土) 1:13 質問
【45742】Re:Enterだけで移動できる? Kein 07/1/13(土) 1:42 回答
【45743】Re:Enterだけで移動できる? じろう 07/1/13(土) 2:06 発言
【45744】Re:Enterだけで移動できる? Kein 07/1/13(土) 2:23 発言
【45745】Re:Enterだけで移動できる? じろう 07/1/13(土) 3:12 発言
【45746】Re:Enterだけで移動できる? じろう 07/1/13(土) 3:35 発言
【45747】Re:Enterだけで移動できる? じろう 07/1/13(土) 9:58 発言
【45751】Re:Enterだけで移動できる? Kein 07/1/13(土) 16:06 回答
【45757】Re:Enterだけで移動できる? じろう 07/1/13(土) 17:45 発言
【45771】Re:Enterだけで移動できる? じろう 07/1/14(日) 1:14 お礼
【45772】Re:Enterだけで移動できる? Kein 07/1/14(日) 1:26 発言
【45773】Re:Enterだけで移動できる? Kein 07/1/14(日) 1:33 発言
【45775】Re:Enterだけで移動できる? じろう 07/1/14(日) 2:29 発言
【45778】Re:Enterだけで移動できる? Kein 07/1/14(日) 2:56 発言
【45779】Re:Enterだけで移動できる? Kein 07/1/14(日) 2:59 発言
【45780】Re:Enterだけで移動できる? じろう 07/1/14(日) 3:42 お礼
【45782】Re:Enterだけで移動できる? じろう 07/1/14(日) 4:53 質問
【45795】Re:Enterだけで移動できる? Kein 07/1/14(日) 17:10 発言
【45813】Re:Enterだけで移動できる? じろう 07/1/15(月) 0:38 発言
【45814】Re:Enterだけで移動できる? じろう 07/1/15(月) 1:06 発言
【45823】Re:Enterだけで移動できる? Kein 07/1/15(月) 14:23 回答
【45843】Re:Enterだけで移動できる? じろう 07/1/16(火) 1:46 発言
【45844】Re:Enterだけで移動できる? Kein 07/1/16(火) 2:18 回答
【45853】Re:Enterだけで移動できる? じろう 07/1/16(火) 11:10 発言
【45859】Re:Enterだけで移動できる? ひげくま 07/1/16(火) 13:38 回答
【45860】Re:Enterだけで移動できる? ひげくま 07/1/16(火) 13:47 発言
【45861】Re:Enterだけで移動できる? じろう 07/1/16(火) 14:18 発言
【45862】Re:Enterだけで移動できる? ひげくま 07/1/16(火) 14:33 発言
【45864】Re:Enterだけで移動できる? じろう 07/1/16(火) 15:30 発言
【45863】Re:Enterだけで移動できる? りん 07/1/16(火) 15:26 発言
【45865】Re:Enterだけで移動できる? ひげくま 07/1/16(火) 15:57 発言
【45866】Re:Enterだけで移動できる? じろう 07/1/16(火) 16:47 発言
【45867】Re:Enterだけで移動できる? ひげくま 07/1/16(火) 17:03 発言
【45868】Re:Enterだけで移動できる? じろう 07/1/16(火) 17:04 発言
【45869】Re:Enterだけで移動できる? ひげくま 07/1/16(火) 17:20 発言
【45870】Re:Enterだけで移動できる? じろう 07/1/16(火) 18:07 発言
【45877】Re:Enterだけで移動できる? ひげくま 07/1/16(火) 21:02 発言
【45758】Re:Enterだけで移動できる? awu 07/1/13(土) 19:57 回答
【45759】Re:Enterだけで移動できる? awu 07/1/13(土) 20:27 回答
【45769】Re:Enterだけで移動できる? じろう 07/1/14(日) 0:36 発言
【45774】Re:Enterだけで移動できる? awu 07/1/14(日) 1:45 回答
【45776】Re:Enterだけで移動できる? じろう 07/1/14(日) 2:31 お礼

36170 / 76738 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free