Excel VBA質問箱 IV

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

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


9118 / 13644 ツリー ←次へ | 前へ→

【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 お礼[未読]

【29231】セルの色付けについて
質問  ユイ  - 05/9/28(水) 16:01 -

引用なし
パスワード
   はじめまして。超初心者です。
私は今、検索のマクロを作っていましてエクセルのマクロにて、セルに色をつけることはできたのですが、元の色に戻す方法がわかりません。下記パターン見ないな感じなのですが・・・

元のセルの色(青)→色つけしたセル(赤)
※元のセルの色には(青)や(白)や(黄色)など多色があります。

どなたか宜しくお願いいたしますm(__)m

【29235】Re:セルの色付けについて
発言  Jaka  - 05/9/28(水) 16:29 -

引用なし
パスワード
   こんにちは。
マクロで行った物は元に戻せません。
ですから、元に戻したければ、マクロで内容を変える前にバックアップしておいてそのブック、シート等と比較して元に戻す事になります。
大変面倒くさいので、あまりやる人はいない見たいです....。

他、別シートにマクロで書き換える前の色ナンバーとセルのアドレスを書き込んでおいて、それを見て戻す事になると思います。
それでもどの辺りまでの手順を控えておくのか、と言った問題も出てきたりします。

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

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

【29251】Re:セルの色付けについて
発言  Jaka  - 05/9/29(木) 10:20 -

引用なし
パスワード
   ユイさん、ichinose さん、こんにちは。
>"元戻し!!"
>さまぁ〜ずの三村のマネ?
>(わかる???)
すみません。
水戸黄門の玉ちゃんなら見たことがあるので解るんですが...。
ローカルネタですみません。

セルにIDあるのかと思ってやってみたら...。
サポートしてません。だって...。(T_T) by97

Sub sggh()
Dim Cel As Range
For Each Cel In Range("A1:B4")
  'Msgbox Cel.ID
  i = i + 1
  Cel.Id = i
Next
End Sub

【29266】Re:セルの色付けについて
発言  ichinose  - 05/9/29(木) 11:58 -

引用なし
パスワード
   ▼Jaka さん:
こんにちは。


>セルにIDあるのかと思ってやってみたら...。
>サポートしてません。だって...。(T_T) by97
>
>Sub sggh()
>Dim Cel As Range
>For Each Cel In Range("A1:B4")
>  'Msgbox Cel.ID
>  i = i + 1
>  Cel.Id = i
>Next
>End Sub

失礼しました。
投稿コードを確認したのは、Excel2000、Excel2002
です。
取り急ぎバージョンの確認だけ投稿しておきます。

【29267】Re:セルの色付けについて
お礼  ユイ  - 05/9/29(木) 11:59 -

引用なし
パスワード
   皆様どうもありがとうございました。

題名の件につきまして解決いたしました。

今後も参考にさせていただきたいと思います。

【29270】Re:セルの色付けについて
お礼  Jaka  - 05/9/29(木) 12:13 -

引用なし
パスワード
   ▼ichinose さん:
>投稿コードを確認したのは、Excel2000、Excel2002
>です。
>取り急ぎバージョンの確認だけ投稿しておきます。
くそ〜、やっぱし2000以上かぁ〜。
家の2000でためしてみよぉっと。
でもOffice2000のIE5.0だから、できんかったりして....。

IEぐらい家に持って帰って、インストールできるようにしやがれってんだMS。
2GBのUSBメモリ買ったから、大体は家に持って帰れると思う。

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