- ベストアンサー
Excelのworksheetどこ間違えてますか?
Private Sub Worksheet_Change(ByVal Target As Range) If Intersect(Target, Range("A1:A65536")) Is Nothing Then Exit Sub If 0 < Target.Value And Target.Value < 6 Then Target.Offset(0, 1).Value = Format(Time, "h時m分s秒") Else Target.Offset(0, 1).Value = "" End If End Sub 以前、このサイトで教えてもらったワークシートのプログラムです。 簡単に言えばA列に1から5までの値を入れれば現在時間をB列に 表示し、それ以外の場合は何もいれないと言ったものです。 以前はできたんですが最近また入れるとできなくなっていました。 どこかおかしいとこありますでしょうか??
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
>最近また入れるとできなくなっていました。 とりあえず2つの原因が考えられます 1つめは Application.EnableEvents = False になっている可能性が考えられます。そうするとシート上で何らかの操作をしてもイベントが発生しないのでWorksheet_Changeのモジュールも動きません。どこでFalseになったか分からないので明確な回答はできませんが、これを回復させるにはThisWorkbookのモジュールシートに以下を書いておけばブックを開いたときにTrueにできます Private Sub Workbook_Open() Application.EnableEvents = True End Sub 2つめの原因として「一回の操作で複数のセルの値を変更した」ことが考えられます。その場合は以下のようなコードにすれば良いです Private Sub Worksheet_Change(ByVal Target As Range) Dim rng, r As Range Set rng = Intersect(Target, Range("A:A")) If rng Is Nothing Then Exit Sub For Each r In rng If 0 < r.Value And r.Value < 6 Then r.Offset(0, 1).Value = Format(Time, "h時m分s秒") Else r.Offset(0, 1).Value = "" End If Next r End Sub
その他の回答 (4)
- keirika
- ベストアンサー率42% (279/658)
セキュリティーレベルが『高』以上になっていないでしょうか。
- xls88
- ベストアンサー率56% (669/1189)
>エラーにはならないが時刻が入力されないです。 下記コードを End Sub の上に入れてみてください。 MsgBox "動いています!" マクロが動いているならメッセージボックスが出ます。 あと、ブレークポイントを設けるとかしてデバッグをしてください。 デバッグについて http://members.jcom.home.ne.jp/rex-uchida/vba110.htm ステップ実行 http://hp.vector.co.jp/authors/VA016119/step/step01.html ローカルウインドウでのデバッグ http://www.nikonet.or.jp/spring/sanae/program/vba/vba_11.htm
- n-jun
- ベストアンサー率33% (959/2873)
貼り付けたシートと別のシートに値を入れているとか? はないですよね。
- xls88
- ベストアンサー率56% (669/1189)
>以前はできたんですが最近また入れるとできなくなっていました。 何を何処に入れたのですか? エラー内容は表示されますか? マクロは途中で停止するのですか? エラーにはならないが時刻が入力されないのですか? エラー内容が解れば書き込まれた方が良いかと思います。
補足
詳しく説明するの忘れてました。 エラーにはならないが時刻が入力されないです。 あとA列に1から5の値を入力しました。