• ベストアンサー

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列に 表示し、それ以外の場合は何もいれないと言ったものです。 以前はできたんですが最近また入れるとできなくなっていました。 どこかおかしいとこありますでしょうか??

質問者が選んだベストアンサー

  • ベストアンサー
  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.4

>最近また入れるとできなくなっていました。 とりあえず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)
回答No.5

セキュリティーレベルが『高』以上になっていないでしょうか。

  • xls88
  • ベストアンサー率56% (669/1189)
回答No.3

>エラーにはならないが時刻が入力されないです。 下記コードを 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)
回答No.2

貼り付けたシートと別のシートに値を入れているとか? はないですよね。

  • xls88
  • ベストアンサー率56% (669/1189)
回答No.1

>以前はできたんですが最近また入れるとできなくなっていました。 何を何処に入れたのですか? エラー内容は表示されますか? マクロは途中で停止するのですか? エラーにはならないが時刻が入力されないのですか? エラー内容が解れば書き込まれた方が良いかと思います。

goku716
質問者

補足

詳しく説明するの忘れてました。 エラーにはならないが時刻が入力されないです。 あとA列に1から5の値を入力しました。

関連するQ&A