ここから本文です

以下のような VBAを作成し、前までは使えたのですが、突然使えなくなりました。...

man********さん

2019/4/1211:08:07

以下のような VBAを作成し、前までは使えたのですが、突然使えなくなりました。
Aの列に何か入力された場合、Iの列に時刻が反映されるというものです。

Private Sub Worksheet_Change(ByVal Target As Range)
Dim rng, r As Range
If Target.Column <> 1 Then Exit Sub
Set rng = Intersect(Target, Range("A:A"))
If rng Is Nothing Then Exit Sub
For Each r In rng
If r.Value <> "" Then
Range("I" & r.Row).Value = Format(Now(), "hh:mm:ss")
Else
Range("I" & r.Row).Value = ""
End If
Next r
End Sub

こころあたりといえば他のマクロを作成したことぐらいですが、何かきっかけなどがありますでしょうか。
また、もしシートを指定しPrivateではなくSub()を使用した場合のVBAを教えてください。

よろしくお願いします。

この質問は、活躍中のチエリアン・専門家に回答をリクエストしました。

閲覧数:
48
回答数:
2
お礼:
100枚

違反報告

ベストアンサーに選ばれた回答

kik********さん

2019/4/1212:41:44

イミディエイトウィンドウで、以下を張り付けて、Enter

? Application.EnableEvents

表示されるのは、False / True のどちらですか?
False の場合、イベントは抑止されているので、
Worksheet_Change も動きません

Application.EnableEvents = True

と入力し、Enter して、イベント発生を有効とします

記述をみると
> If Target.Column <> 1 Then Exit Sub
これは、あってもなくても・・・・その下で同じような判別してますね?

また、イベントの抑止をしていないので、
Range("I" & r.Row).Value = ・・・・
でまた、Worksheet_Change が呼び出される・・・・等、無駄が見られるかと

以下に変更してどうなりますか


Private Sub Worksheet_Change(ByVal Target As Range)
   Dim rng As Range

   Set Target = Intersect(Target, Range("A:A"), Me.UsedRange)
   If (Target Is Nothing) Then Exit Sub

   Application.EnableEvents = False
   For Each rng In Target
      With rng.EntireRow.Range("I1")
         If (rng.Value <> "") Then
            .Value = Format(Now(), "hh:nn:ss")
         Else
            .ClearContents
         End If
      End With
   Next
   Application.EnableEvents = True
End Sub



※ 引数 Target は、ByVal なので、書き換えても大丈夫・・・

※ Intersect(Target, Range("A:A"), Me.UsedRange)

ここで、Me.UsedRange も指定しているのは、
操作的にあるのか分かりませんけど
A 列を選んで、列挿入・削除したら・・・・
引数 Target に渡ってくる範囲は、A1 ~ A 最終行のデカイ範囲
処理する個数を少しでも少なく・・・・

Me.UsedRange を指定しない時との違いは、確認してみてください
また、提示あった記述で、A 列挿入・削除されてみれば・・・

この回答は投票によってベストアンサーに選ばれました!

ベストアンサー以外の回答

1〜1件/1件中

kir********さん

2019/4/1211:24:45

Sub イベント解除の開放()
Application.EnableEvents = True
End Sub

どうぞ。

あわせて知りたい

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる