vbaで教えていただきたいのでが、
Private Sub Worksheet_Change(ByVal Target As Range)
Select Case Target.Address(False, False)
'NO1
Case "F12" 'このセルが変更されたら---(1)
Range("H12").Select 'このセルに移動する---(2)
Case Else
End Select
End Sub
エンターを押すと指定のセルに移動するようなプログラムを作りたいのですが
変更しないと指定したセルに行きません。
初心者すぎてどこを変更していいかわかりません。これではできないのでしょうか?
ご教授お願いします。
No.1
- 回答日時:
「Worksheet_Change」イベントは「ワークシートのセルがユーザーまたは外部リンクにより変更されたときに発生します。
」なので変更されなければ動作しません。「入力後にセルを移動する」にチェックを入れて(もちろんコードで「Application.MoveAfterReturn = True」にしてもOK)「Worksheet_SelectionChange」イベントを使ったほうが良いと思います。
No.2
- 回答日時:
こんにちは。
失礼な聞こえ方になったらすみませんが、ものすごく古典的な質問です。
そういう私も、ずいぶん昔に、このサイトで同じように教わった者の一人です。
記憶をたどってみましたが、確か、こんなふうな書き方をしていたように思います。
Auto_Openに入れて設定してもよいけれども、これは全部に波及してしまいますから、個別のシートの設定が必要だと思います。
'標準モジュール (プロシージャ名は適当に)
Sub OnEnterKeyMoving()
If ActiveSheet.Name <> "Sheet1" Then Exit Sub
Select Case ActiveCell.Address(0, 0)
Case "F12": Range("H12").Select
Case Else: ActiveCell.Offset(1).Activate
End Select
End Sub
''該当するシートモジュールに貼り付ける
Private Sub Worksheet_Activate()
Application.OnKey "{ENTER}", "OnEnterKeyMoving"
Application.OnKey "~", "OnEnterKeyMoving"
End Sub
Private Sub Worksheet_Deactivate()
'設定解除
Application.OnKey "{ENTER}"
Application.OnKey "~"
End Sub
No.4ベストアンサー
- 回答日時:
訂正しました。
#2で書いたものは、すべて消してください。
ややこしいと思われるかもしれませんが、キーの設定を他に波及させないためです。
また、設定したシートは、若干、カーソルの動きが鈍く感じます。
'//シートモジュール
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 "F12": Range("H12").Select
Case Else: ActiveCell.Offset(1).Activate
End Select
End If
End Sub
Sub SettingKeys(flg As Boolean)
If flg Then
Application.OnKey "{ENTER}", Me.Name & ".OnEnterKeyMoving"
Application.OnKey "~", "OnEnterKeyMoving"
'MsgBox "キーを設定しました"
Else
Application.OnKey "{ENTER}"
Application.OnKey "~"
'MsgBox "キーを解除しました"
End If
End Sub
'-------------
'設定したシート名を入れる
'ThisWorkbook モジュール
Private Sub Workbook_Deactivate()
Worksheets("Sheet1").SettingKeys False
End Sub
Private Sub Workbook_Activate()
Worksheets("Sheet1").SettingKeys True
End Sub
No.5
- 回答日時:
まむらつさんの要件にあっているか分からないのですが、とりあえず、ご参考ということで…。
下記のマクロは、Enterキーの押下により、セルF12→H12→H10→F10の順でアクティブセルを移動します。
とりあえず、マクロを該当シートのシートモジュールに張り付けてみて下さい。
その上で、セルF12、H12、H10、F10のいずれかを選択して、Enterキーを押下すると次のセルに移動します。
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
On Error GoTo Fin_Sub
If Target.Count > 1 Then Exit Sub
On Error GoTo 0
Dim myRng As Range
Set myRng = Range("F12,H12,H10,F10")
If Not Intersect(Target, myRng) Is Nothing Then
myRng.Select
Target.Activate
End If
Fin_Sub:
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エクセルのVBAでダブルクリックでチェックを入れたあと 1 2022/10/26 20:30
- Visual Basic(VBA) 【追加】ファイルを閉じてダイアログで保存した時だけ処理の実行をする 3 2022/03/23 15:43
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- Visual Basic(VBA) vbaでセルに入力したときに,その横にあるセルを保護し入力不可にするマクロを作りたいです。 2 2022/04/24 20:59
- Excel(エクセル) 2つのVBAを一緒にしたら機能しなくなりました(エクセル) 7 2022/06/02 12:41
- Visual Basic(VBA) エクセル VBAについて 2 2022/05/16 16:33
- Visual Basic(VBA) 【変更】ファイルを閉じてダイアログで保存した時、更新したシートだけの処理の実行をする 5 2022/03/26 18:31
- Visual Basic(VBA) Worksheet_Change 4 2023/03/12 21:54
- Visual Basic(VBA) select caseの入れ子 3 2023/03/08 18:48
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 2 2022/05/26 17:19
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelの「0」だけ非表示、小数...
-
エクセルで条件に一致したセル...
-
日付が未入力の際はゼロか、空...
-
(Excel)あるセルに文字を入力...
-
エクセルで1月0日と表示される!!
-
Rangeメソッドは失敗しました。...
-
複数シートの同じセル内容を1シ...
-
Excelシートの保護時にデータの...
-
Aというブックの1というシート...
-
エクセルのルビがついたセルを...
-
エクセルの文字
-
別シートのセルを絶対参照にする
-
エクセルのフッタやヘッダーに...
-
シート参照で変数を使いたい(EX...
-
EXCELマクロで、シート間でのコ...
-
エクセルで20万行あるシート...
-
VBAで変数に関数式の結果をセッ...
-
VBAで、セル(Range)のオブジ...
-
excelでハイパーリンクになって...
-
マクロ セルに入力されたシー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelの「0」だけ非表示、小数...
-
日付が未入力の際はゼロか、空...
-
エクセルで条件に一致したセル...
-
エクセルで1月0日と表示される!!
-
(Excel)あるセルに文字を入力...
-
別シートのセルを絶対参照にする
-
Rangeメソッドは失敗しました。...
-
Excelシートの保護時にデータの...
-
複数シートの同じセル内容を1シ...
-
エクセルで、加筆修正したセル...
-
シート参照で変数を使いたい(EX...
-
エクセルで複写のように自動入...
-
Excelで複数シートの選択セルを...
-
INDIRECTを使わず excelで複数...
-
ExcelでTODAY関数を更新させな...
-
式の説明をお願いします。
-
excelでハイパーリンクになって...
-
エクセルのルビがついたセルを...
-
Excelでスクロールすると文字が...
-
エクセル ハイパーリンクで画像...
おすすめ情報