|
ユイさん、Jaka さん、こんばんは。
>こんにちは。
>マクロで行った物は元に戻せません。
>ですから、元に戻したければ、マクロで内容を変える前にバックアップしておいてそのブック、シート等と比較して元に戻す事になります。
考え方は、↑これですよね!! 後は、どこにバックアップしておくか??
RangeオブジェクトのIDプロパティに退避させて試してみました。
サンプルコードを示します。
新規ブックの標準モジュールに以下のコードを記述して下さい。
'===============================================================
Sub main()
Dim crng As Range
Dim rng As Range
Dim cindex As Long
Set rng = Range("a1:f10")
cindex = 1
On Error Resume Next
For Each crng In rng
Err.Clear
crng.Interior.ColorIndex = cindex
If Err.Number <> 0 Then
cindex = 0
crng.Interior.ColorIndex = cindex
End If
cindex = cindex + 1
Next
MsgBox "最初の色!!"
Call set_color(rng, 3)
MsgBox "赤に変更"
Call undo_color(rng)
MsgBox "元戻し!!"
End Sub
'=======================================================
Sub set_color(rng As Range, clidx As Long)
Dim crng As Range
For Each crng In rng
With crng
.ID = .Interior.ColorIndex
.Interior.ColorIndex = clidx
End With
Next
End Sub
'======================================================
Sub undo_color(rng As Range)
Dim crng As Range
For Each crng In rng
With crng
If .ID <> "" Then
.Interior.ColorIndex = Val(.ID)
End If
End With
Next
End Sub
mainを実行して確認して下さい。
但し、ブックを開きなおすと情報は消えてしまいます。
もっとも、その方が都合の良い場合もありますよね!!
"元戻し!!"
さまぁ〜ずの三村のマネ?
(わかる???)
|
|