
昨日、エクセルVBAで、隣のセルにマクロを実行した日付けを自動入力する方法を質問した者ですが、またまた教えて下さい!
こちらで教えてもらい、昨日の質問は解決したのですが、自動入力した箇所(例えばa1からb1)を消した場合、エラーに、なってしまい、その後マクロが起動しません。
そこでエラーを回避する方法を教えて下さい!
入力してあるコードは
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column <> 1 Then Exit Sub
Application.EnableEvents = False
If Target.Value = "" Then
Target.Offset(0, 1).Value = ""
Else
Target.Offset(0, 1).Value = Date
End If
Application.EnableEvents = True
End Sub
どうか、よろしくお願います!
No.1ベストアンサー
- 回答日時:
おそらくですが、複数のセルを選択してDELETEキーを押されたのではないかと想定します。
記載のマクロだと、複数選択の場合にColumnやRowと言ったRangeプロパティに関するデータの保存方法が変わりますので、参照するプロパティに正常な値が入っていないためのエラーです。上記を解決するためには
If Target.Column <> 1 Then Exit Sub
の前に
If Selection.Count > 1 Then Exit Sub
を挿入してください。
おそらくいけると思いますが...
また、現在マクロ停止中となっているハズです。そのため以降の処理が一切行われなくなっています。実行タブのリセットを押して処理を停止してください。ツールバーが表示されているなら■ボタンでも構いません
No.2
- 回答日時:
こんにちは
No1もご指摘なさっていますが、原因はおそらく複数セルが変更される場合への対応を省いていることでしょうか。
コピペやデリートなどで同時に複数セルの値が変更される可能性はありますので、そのような場合でも対応できるような構造に変えてみました。
元のコードはA列全体に対して動作するようになっていますが、以下(↓)では定数定義で範囲を指定するようにしています。
(ひとまず、A1:A20の範囲に設定してあります)
Private Sub Worksheet_Change(ByVal Target As Range)
Dim tc As Range, c As Range, v
Const targetRange = "A1:A20" '←処理対象とするセル範囲
Set tc = Intersect(Target, Range(targetRange))
If tc Is Nothing Then Exit Sub
Application.EnableEvents = False
For Each c In tc
If c.Value = "" Then v = "" Else v = Date
c.Offset(0, 1).Value = v
Next c
Application.EnableEvents = True
End Sub
なお、現在はマクロが停止中なだけではなく
>Application.EnableEvents = False
の状態にある可能性が高いです。
(割り込みが発生しない状態なので、マクロが反応しない)
もしも、そのような場合には、一旦、以下のマクロを手動で実行すれば元に戻ると思います。
Sub reset()
Application.EnableEvents = True
End Sub
現状況からの回復方法も詳しく教えていただき、ありがとうございます!
今回のような作業はふつうに行なっている事ですが、その部分にも処理が必要とは知りませんでした、、、、。
とても勉強になりました!ありがとうございます!!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel2007で、太字にした行のみ...
-
「マクロ」の足し算の式を教え...
-
エクセルで小数を含む数字を抽...
-
Excel2007 セルを右方向に削除...
-
Excel にて非表示行を探すワー...
-
excel ある部分だけをコピペし...
-
エクセルを使って英文から単語...
-
条件に応じて特定の行を非表示...
-
並べ替えのマクロで対象行の範...
-
EXCEL マクロで「キーワード入...
-
Excelで連続した1以上の数値の...
-
エクセル VBA 小数点を含む数字...
-
エクセルでマクロで別のセルに
-
エクセルで全ての数字間にカン...
-
Excelでセル内の数式は残し値だ...
-
エクセルの複数シートの保護を...
-
別シート参照のセルをシート毎...
-
Excel、同じフォルダ内のExcel...
-
Excelのシートを、まとめて表示...
-
エクセルで前シートを参照して...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel2007で、太字にした行のみ...
-
条件に応じて特定の行を非表示...
-
Excel にて非表示行を探すワー...
-
excel ある部分だけをコピペし...
-
エクセル VBA 小数点を含む数字...
-
値貼り付けをしても書式も貼り...
-
「マクロ」の足し算の式を教え...
-
エクセルで全ての数字間にカン...
-
Excel(VBA)データ入力に応じて...
-
Excel2007 セルを右方向に削除...
-
wordのvbaでハイパーリンク設定...
-
Excelでセル内の数式は残し値だ...
-
エクセルで連番をマクロで
-
エクセルで特定の行を消して間...
-
エクセル オートフィルタの抽...
-
エクセルで特定の数字となる組...
-
行の入れ替えってどうするの?
-
昨日、エクセルVBAで、隣のセル...
-
エクセル2003でマクロをおこな...
-
【マクロ】セル内のテキストを...
おすすめ情報