Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


40217 / 76732 ←次へ | 前へ→

【41616】Range("A1:A5").Value = "" 等の不思議
発言  Jaka  - 06/8/17(木) 9:55 -

引用なし
パスワード
   昨日、Worksheet_Changeのコードを書いていて気づいたことですが...。

A、B列こんな感じに適当な文字を入れます。

A B
あ い
あ い
あ い
あ い
あ い
あ い
あ い

シートモジュールに下記マクロを

Private Sub Worksheet_Change(ByVal Target As Range)
 If Target.Cells(1).Value = "" Then
   Application.EnableEvents = False
   Target.Offset(, 1) = ""
   Application.EnableEvents = True
 End If
End Sub

A列の文字を消すと同じ行のB列の文字が消えます。
この後、編集メニューの元に戻す等が生きています。
実際、元に戻してみると、A列の消した分だけ元に戻ります。
(Ctrl + Z でも同じ)
Target.Offset(, 1) = "1"
などと、何か文字の類を入れると元に戻せません。
(セルの文字を消した場合限定。)
Range("A1:A5").ClearContents
等で、消した場合は元に戻せません。

下記コードも同じようなものです。
C1以外の適当なセルに1を入れると、C1の値が消えます。
Ctrl + Z で、元に戻すと1を入れたセルだけ元に戻ります。

Private Sub Worksheet_Change(ByVal Target As Range)
 If Target.Value = 1 Then
   Application.EnableEvents = False
   Range("C1") = ""
   Application.EnableEvents = True
 End If
End Sub

今度は、下記コードをマクロ登録してボタンから試してみました。
同じようにマクロで文字を消した操作以外は元に戻せます。
表現があっているのか解りませんが、
元に戻せるのは、マクロで消した文字を入力した直後までで、入力した文字はマクロで消されている為、それ以前の操作は元に戻せなかった。

Sub dkdk()
  Range("A1:A5").Value = ""
End Sub
""は、Emptyでも可。

マクロでセル内容を変えた場合、ずべて元に戻せないと思っていましたが、
こんなものなのでしょうか?
今まで知らなかった。

By Win98se & EXL2000SR1
0 hits

【41616】Range("A1:A5").Value = "" 等の不思議 Jaka 06/8/17(木) 9:55 発言
【41620】Re:Range("A1:A5").Value = &qu... ichinose 06/8/17(木) 10:27 発言
【41643】Re:Range("A1:A5").Value = &am... ichinose 06/8/18(金) 7:53 発言
【41662】Re:Range("A1:A5").Value = &am... Jaka 06/8/18(金) 16:31 発言

40217 / 76732 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free