'//シートモジュール
Private Sub Worksheet_Activate()
SettingKeys True
End Sub
Private Sub Worksheet_Deactivate()
'設定解除
SettingKeys False
End Sub
Sub OnEnterKeyMoving()
'★設定はここでします。
If Not ActiveSheet.Parent Is Me.Parent Then
SettingKeys False
Else
Select Case ActiveCell.Address(0, 0)
Case "B6": Range("D6").Select
Case "D6": Range("H6").Select
Case "H6": Range("K6").Select
Case "K6": Range("L6").Select
Case "L6": Range("O6").Select
Case "O6": Range("B8").Select
Case "B8": Range("F8").Select
Case "F8": Range("C10").Select
Case Else: ActiveCell.Offset(1).Activate
End Select
End If
End Sub
Sub SettingKeys(flg As Boolean)
If flg Then
Application.OnKey "~", Me.Name & ".OnEnterKeyMoving"
Application.OnKey "{ENTER}", Me.Name & ".OnEnterKeyMoving"
'MsgBox "キーを設定しました"
Else
Application.OnKey "{ENTER}"
Application.OnKey "~"
'MsgBox "キーを解除しました"
End If
End Sub
'-------------
'設定したシート名を入れる
'ThisWorkbook モジュール
Private Sub Workbook_Deactivate()
Dim sheetname As String
sheetname = Sheets(1).Name
Worksheets(sheetname).SettingKeys False
End Sub
Private Sub Workbook_Activate()
Dim sheetname As String
sheetname = Sheets(1).Name
Worksheets(sheetname).SettingKeys True
End Sub
エンターキーで指定したセルに移動するプログラムなのですがシート名を変更すると
動かなくなってしまいます。
どこを変更したらよいでしょうか?
分かる方いたらよろしくお願いします。
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
作者です。
たぶん、私の想像があっていれば、汎用的にお使いになりたいわけですね。
そういう指摘を受ければ、ごもっともです。
そうすると、一番良い方法は、Class からインスタンスを起こすことですね。
どのシートでも、使うようにするなら、以下のようなClass にしてあげます。
起動は、Aut_Open で、一旦閉じて開ければ、自動設定になっています。
最初にClass モジュールの挿入
'//標準モジュール
Public myClass As Class1
Public ShName As String
Sub Auto_Open()
'これは全体的にはアドイン式になっている
Dim sh As Worksheet
Set myClass = New Class1
ShName = "Sheet3" 'シート名を入れる
Set sh = Worksheets(ShName)
Set myClass.clsWorkbook = ThisWorkbook 'ここも変更が可能
Set myClass.clsApp = Excel.Application
Set myClass.clsWorksheet = sh
SettingKeys True
End Sub
Sub SettingKeys(flg As Boolean)
With myClass
If flg Then
.clsApp.OnKey "~", "EnterMove" '半角の~波線
.clsApp.OnKey "{ENTER}", "EnterMove"
'MsgBox "キーを設定しました"
Else
.clsApp.OnKey "{ENTER}"
.clsApp.OnKey "~", "" '半角の~波線
'MsgBox "キーを解除しました"
End If
End With
End Sub
Sub EnterMove()
myClass.OnEnterKeyMoving
End Sub
'//Class1モジュール
Public WithEvents clsApp As Excel.Application
Public WithEvents clsWorksheet As Worksheet
Public WithEvents clsWorkbook As Workbook
Private Sub clsWorksheet_Activate()
SettingKeys True
End Sub
Private Sub clsWorksheet_Deactivate()
'設定解除
SettingKeys False
End Sub
Sub OnEnterKeyMoving()
'★設定はここでします。
If Not ActiveWorkbook Is clsWorkbook Then
SettingKeys False
ElseIf clsWorksheet.Name <> ActiveSheet.Name Then
SettingKeys False
Else
Select Case ActiveCell.Address(0, 0)
Case "B6": Range("D6").Select
Case "D6": Range("H6").Select
Case "H6": Range("K6").Select
Case "K6": Range("L6").Select
Case "L6": Range("O6").Select
Case "O6": Range("B8").Select
Case "B8": Range("F8").Select
Case "F8": Range("C10").Select
Case Else: ActiveCell.Offset(1).Activate
End Select
End If
End Sub
'-------------
'設定したシート名を入れる
Private Sub clsWorkbook_Deactivate()
SettingKeys False
End Sub
Private Sub clsWorkbook_Activate()
SettingKeys True
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- Visual Basic(VBA) 【追加】ファイルを閉じてダイアログで保存した時だけ処理の実行をする 3 2022/03/23 15:43
- Visual Basic(VBA) 【変更】ファイルを閉じてダイアログで保存した時、更新したシートだけの処理の実行をする 5 2022/03/26 18:31
- Visual Basic(VBA) エクセルのVBAでダブルクリックでチェックを入れたあと 1 2022/10/26 20:30
- Visual Basic(VBA) vbaでセルに入力したときに,その横にあるセルを保護し入力不可にするマクロを作りたいです。 2 2022/04/24 20:59
- Excel(エクセル) 2つのVBAを一緒にしたら機能しなくなりました(エクセル) 7 2022/06/02 12:41
- Visual Basic(VBA) 動きっぱなしです。止め方とプロシージャの間違いを教えて下さい! 5 2022/08/15 23:08
- Visual Basic(VBA) select caseの入れ子 3 2023/03/08 18:48
- Visual Basic(VBA) Excel vbaについての質問 3 2023/04/18 16:14
- Visual Basic(VBA) エクセル VBAについて 2 2022/05/16 16:33
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ワードに「URL」を貼り付けると...
-
エクセルのカーソル位置表示色...
-
APIを使う時は参照設定は不要?
-
Wordで行送りがmm単位にならない
-
エクセルのページ設定を保存したい
-
Wordでこのような三角が出てく...
-
エクセルで薄く透ける文字を入...
-
XChange Viewerで文字サイズの変更
-
印刷用紙の中央に点線をいれた...
-
Word差し込み印刷で2ページ以降...
-
ワードで定型レイアウトを崩さ...
-
スケッチスタイルの有効化
-
【エクセル】コメントの初期(...
-
googleマップを半径表示させる...
-
ワードでCO2(二酸化酸素) ...
-
月60時間以上の時間を求める
-
例えはワードで「10の3乗」...
-
Excelの集計がSUM関数で、1円...
-
WORD中の赤色文字を、通常の黒...
-
差し込み印刷で反映されないフ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ワードに「URL」を貼り付けると...
-
【Wordの初期化についてお願い...
-
APIを使う時は参照設定は不要?
-
ヘッダーとフッターがクリック...
-
Windows 10の標準アプリ「アラ...
-
参照の設定について教えて下さい。
-
エクセルのカーソル位置表示色...
-
Word2000、オートコレクト、オ...
-
outlook設定方法
-
スクリーンセーバの設定・解除...
-
Access2000VBAでOLE/DDEタイム...
-
クイックアクセスツールバーの...
-
2.7 ?2.8?
-
Excelの共有ファイルについて2...
-
Wordで「バックスラッシュ」を...
-
このソフトからのおしらせを受...
-
Outlook タイムゾーン設定から...
-
エクセルの編集オプション セル...
-
Access2000でのShift有効無効を...
-
最新のJoyToKeyについて
おすすめ情報