[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『変更・追加箇所の色替えについて』(ななし)
お世話になります。大量にあるデータを不定期更新し、変更箇所を一目でわかるようにしなければなりません。そこで変更箇所(クリックしたら)が水色のセルに変わるという、以下のようなマクロを見つけ試しました。
Private Sub Worksheet_Change(ByVal Target As Range)
Target.Interior.ColorIndex = 37
End Sub
思った通りの処理ができたのですが、このマクロを使うと、エクセルの「元に戻る」機能が使えなくなって困っています。エクセルの「元に戻す」機能や「フィルタ」をかけるなどの機能を損なわないやり方を教えてください。
< 使用 Excel:Excel2010、使用 OS:Windows10 >
代わりの案として、元のシートのコピーを作成しておいてはどうでしょうか。そして、例えば範囲指定してから右クリックすると、コピーシートから元の情報をコピペして戻すのです。いかがですか?
(???) 2017/01/12(木) 17:38
マクロを使うと、
「元に戻す」機能が使えなくなります。
どちらかをあきらめてください。(元に戻す機能が優先だと思いますが。)
まぁ、変更更新をする前に、元シートをコピーしておいて、
それと比較して変更があった場合に条件付き書式で色を変える
なんてことをするときに、元の値をどっかのタイミングでコピーするのは、
マクロでやることも可能です。
(まっつわん) 2017/01/12(木) 17:41
このコードのみならず、どんなマクロであっても、実行すると、それ以前の操作の履歴が消去されてしまいますので 元に戻るボタンは使えないことになります。
どうしても、マクロ実行前の操作履歴を消したくないということなら、マクロ利用を断念せざるを得ないです。 それが仕様です。
あるいは、??? さんアドバイスのように、それを実現するための仕掛けを別途用意する。 結構面倒ですよ。
ところで、見つけられたこのコード、セルを選択したら色が変わるのではなく、セルの値を変更したら色が変わります。 それと、たとえば セルに ABC と入っていた。これを XYZ に変更した。--> 色がつきます。 で、あぁ、しまった、このセルは変更しちゃいけなかったということで ABC に戻した。 --> でも、色がつきます。
つまり、一度ついてしまった色は永久に消えませんよ。
(β) 2017/01/12(木) 17:42
追加で。
値が変われば・・・ ということですけど、何に対して(というか、どの時点に対して)変わった時に 色を付けたいのでしょうか?
たとえば、このブックが 10年前に作られたとします。その10年前の値と比べるのでしょうか? それとも、ブックを開いた時点の値から変更になっている部分ということでしょうか?
どの時点と比べるということが重要ですけど、たとえば、その比べるべき値がはいった状態を別シートに 保存しておき、このシートのセルに、別シートの同じセルとの値が違えば色つけという条件付書式を 設定しておいてもいいかもしれませんね。
別シートは非表示シートでもいいです。 ブックを開いた時点と比較するなら、Workbook_Open あたりで、該当のシートの内容を別シートにコピペしておきます。
★ あぁ、すでに まっつわんさんから条件付書式の提案がありましたね。 失礼しました。
(β) 2017/01/12(木) 17:48
ん〜。
ぼくもこういうことやりたくてVBAを勉強するようになったのですが、、、
最近は、多くを望まないで、出来るだけある機能だけをそのままで、
使うようにしてます。
エクセル2010なら「変更履歴の記録」という機能がありますね。
そちらを使ってみるのも一案かと。。。(使ってみたことないですが^^;)
https://allabout.co.jp/gm/gc/297720/
(まっつわん) 2017/01/12(木) 18:17
???さん、まっつわんさん、βさんのおすすめはコピペして条件付書式ということでしょうか。
コピペするデータがだいぶ重くて、コピペだけの作業で数分PCが固まって失敗することもあったのでマクロでできないかなあと思ったんです。
βさん、「一度ついた色は永久に消えない」→変更箇所を確認したら、セルの色替えで手動でまた消そうと思っています。
ブックの変更については、数千件あるデータ(セルの色やフォントの色が数種類設定されています)を毎月数百件ほど更新して報告する作業があり、「セルを変更したら、シートに使っていない色で塗りつぶし、セルの変更がわかるようにしておく」→「月末に変更箇所をわかるようにしておいたデータをまるごと提出」→「また変えたセルの色を元に戻し、来月に向けて次のセルを変更」を繰り返しています・・
まっつわんさんもおなじことをしたかったんですね!なんだかちょっと嬉しいです(笑
でも現実は厳しそうですね・・・「変更履歴の記録」私もちょっと見てみたのですが、どうもこれ設定すると一部(気づいたのは色でセルを選択)フィルタがかからなくなるみたいです(汗
(ななし) 2017/01/12(木) 23:53
>>コピペするデータがだいぶ重くて、コピペだけの作業で数分PCが固まって失敗することもあったので
シート上の値にもよるでしょうね。 ためしに以下を実行すると固まりますか?
元シートを Sheet1 、値比較用シートを Sheet2 にしています。 なお、試す際にはシートモジュールのコードは消しておいてください。
Sub 月始めの準備() Const last As String = "Sheet2" '値比較用隠しシート名
With Sheets("Sheet1") .Cells.FormatConditions.Delete .Cells.FormatConditions.Add Type:=xlExpression, Formula1:="=A1<>" & last & "!A1" .Cells.FormatConditions(1).Interior.Color = vbRed Sheets(last).Cells.Clear With .Range("A1", .UsedRange) Sheets(last).Range("A1").Resize(.Rows.Count, .Columns.Count).Value = .Value End With End With
End Sub
(β) 2017/01/13(金) 00:13
(1)元シートのA1セルをクリック。
(2)CTRL+SHIFT+END押下。これで全データが範囲選択されるはず。
(3)CTRL+Cでコピー。
(4)コピー先シートのA1セルを右クリックし、形式を指定し、値だけを貼り付け。
(???) 2017/01/13(金) 09:04
コピーの遅さを我慢するか、またはマクロでは元に戻せない事を受け入れるかの、どちらかかと思います。
または、コピーはせずに、毎回前回のブックを別名保存しておき、元に戻したいときは1回前のブックからコピペ、という案も。運用面で一手間増えるので、あまりお薦めしませんが。
(???) 2017/01/13(金) 13:12
「元に戻す」機能はうっかり防止のために欲しかったので、ブック保存だと手間がかかりすぎてしまう気がしました。
改めまして、皆様色々ありがとうございました。マクロを使ったらできないことなど勉強になりました。
もう1度別方向から手順の簡素化を考えてみたいと思います!
またよろしくお願いいたします。
(ななし) 2017/01/13(金) 14:38
ならば、色で目印を付けずに、前月と今月とのブックの値同士を比較したら、
高速化が可能かと思います。
(まっつわん) 2017/01/13(金) 16:31
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.