Excel VBA質問箱 IV

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

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


52329 / 76732 ←次へ | 前へ→

【29242】Re:セルの色付けについて
発言  ichinose  - 05/9/28(水) 18:35 -

引用なし
パスワード
   ユイさん、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を実行して確認して下さい。
但し、ブックを開きなおすと情報は消えてしまいます。
もっとも、その方が都合の良い場合もありますよね!!

"元戻し!!"
さまぁ〜ずの三村のマネ?
(わかる???)

0 hits

【29231】セルの色付けについて ユイ 05/9/28(水) 16:01 質問
【29235】Re:セルの色付けについて Jaka 05/9/28(水) 16:29 発言
【29242】Re:セルの色付けについて ichinose 05/9/28(水) 18:35 発言
【29251】Re:セルの色付けについて Jaka 05/9/29(木) 10:20 発言
【29266】Re:セルの色付けについて ichinose 05/9/29(木) 11:58 発言
【29270】Re:セルの色付けについて Jaka 05/9/29(木) 12:13 お礼
【29267】Re:セルの色付けについて ユイ 05/9/29(木) 11:59 お礼

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