いつもお世話になっております。
VBAのことでは初めて質問させていただきます。なので初歩すぎて呆れるとなるかもしれませんがご了承ください。
私はVBAを触ったことが一度もないのですが、上司の無茶ぶりによりやらされるはめになりました。
今回実装したい機能が三つあるらしく「D列に何か入力されたらH列に今日の日付を載せる」と「E列が変更されたらC列の次の行に移動する」と「エンターキーを押したらカーソルを右に移動」です。エンターキーを押したらカーソルを右に移動ってコードかかなくてもエクセルの元からの機能で右にいきませか?ちゃんとコードを書いた方がよろしいのでしょうか?
D列に何か入力されたらH列に今日の日付を載せる
Private Sub Worksheet_Change(ByVal Target As Range) With Target If Application.Intersect(Range("D4:D10000"), Target) Is Nothing Then Exit Sub If .Count > 1 Then Exit Sub If IsEmpty(.Value) Then .Offset(, 1).ClearContents Else .Offset(, 4).Value = Date End If End With End Sub
E列が変更されたらC列の次の行に移動する
Private Sub Worksheet_Change(ByVal Target As Range) Select Case Target.Column Case 5 'E列が変更されたら---(3) Cells(Target.Row + 1, 3).Select 'C列の次の行に移動する---(4) Case Else End Select End Sub
エンターキーを押したらカーソルを右に移動
Private Sub Workbook_Activate() Application.MoveAfterReturn = True Application.MoveAfterReturnDirection = xlToRight End Sub
上記コードを標準モジュールで書き込み実行してみたのですが、
このようにコードが実行されず変なウィンドウだけが表示されます。
私のコードはまちがっているのでしょうか?
この機能が載っているサイトなどを教えて頂けても嬉しいです。
どうかご教授お願い致します。
掲載したコードでは問題があるのですか?問題があるならそれを書いた方がよいです。添削をしてほしいというなら、このサイトの趣旨と違ってきてしまいますが、親切な人は答えてくれるでしょう。
ttyp03さん、いつもお世話になっております。修正させていただきました。
Worksheet_ChangeやWorkbook_Activateは、ワークシートのセルが変更されたり、ワークシートがアクティベートされたりした時に自動的に呼び出されます。変なウィンドウは、マクロと関連付けられていないF5キーを押したために「どのマクロを呼び出して良いか判らないので、教えてよ」という意図で表示されたものです。
変なウィンドウは、プログラムに問題があるための表示されたものではありません。
coco_bauerさん、Worksheet_ChangeとWorkbook_ActivateはF5を押して実行しなくてもいいんですね(-_-;)ありがとうございます。
回答3件
あなたの回答
tips
プレビュー