[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『条件付書式Sheet1のあるセルがアクティブだったら塗りつぶし』(ちぃ)
いつもお世話になっております。 エクセル2003です。
エクセルでSheet1のA1がクリックされたら、 Sheet2のB1が塗りつぶされるようにしたい のですが、 条件付書式の数式がわかりません。
Sheet2には、地図を背景にしていて、Sheet1の名前がクリックされるとSheet 2の該当箇所が塗りつぶされるようなものを作成したいと思っております。
よろしくお願いいたします。
条件付き書式で行うのは、なかなか難しいかも。 条件付き書式だから、この場合、Sheet2のB1に設定することになるね。 条件付き書式で、これを実現しようとすると、アクティブセルがSheet1のA1かどうかを判定する条件式。 この式は、できないことはないかもしれない。 でも、セルの選択だけでは式が再計算されないので、Sheet1のシートモジュールに、選択がかわったら Sheet2を再計算させるような、おまじない的なマクロを書いておく。
で、・・・・ 色が変わっているかどうかは、SHeet2を見ないとわからないよね。 たぶん、その瞬間は色がついている。でも、Sheet2で、どこかのセルに値をいれた瞬間 アクティブセルがかわるので、色はきえると思うよ。
実際に、この仕掛けを準備したとして、どう利用するのかな? 操作イメージがよくわからないねぇ。 ふつうならどこかをクリックする、そうすると、それに紐つくセルの色が変わる。 それを、クリックしたときに目視できなきゃ意味がないのでは?
(ぶらっと)
やっぱり使いづらいのでは?
1.Sheet2のB1 に条件付き書式。 数式が =AND(CELL("row")=1,CELL("col")=1,RIGHT(CELL("filename"),len(CELL("filename"))-FIND("]",CELL("filename")))="Sheet1") 書式で好きな背景色を。 2.Sheet1のシートモジュールに以下のおまじないを貼付。
Private Sub Worksheet_SelectionChange(ByVal Target As Range) Sheet2.Calculate End Sub
3.ウィンドウを分割して、Sheet1とSheet2を、ともに表示させて Sheet1のA1を選択すると、確かに Sheet2の B1 は背景色がつくし、Sheet1のセルの選択をA1以外にすると Sheet2のB1の背景色は消える。
4.でも、通常の形で、Sheet1のみが見える状態で A1 をクリック。 で、Sheet2を選択。前レスでは、「その瞬間は色が残っているかも」と書いたけど残らないね。 Sheet2を表示したとたんに、アクティブセルがかわって、B1の背景色は消える。
なので、この仕掛けの意味って? と思うね。
(ぶらっと)
地図の上にマークしたいんだと思いますが、右クリックのマクロ案です。
Sheet1 の B列に Sheet2 のセル位置を記入(C2,B3,D10,.... のように)しておき、 Sheet1 の A列を右クリックすると、隣に書いてある Sheet2 のセル位置が赤くなります。 下記を Sheet1 のシートモジュールに置いた例です。
的外れでしたら、読み飛ばしてください。 (Mook)
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean) If Target.Count <> 1 Then Exit Sub If Intersect(Range("A:A"), Target) Is Nothing Then Exit Sub If Target.Offset(0, 1).Value = "" Then Exit Sub
Worksheets("Sheet2").Range("A1:Z1000").Interior.ColorIndex = xlNone '// 一旦クリア Worksheets("Sheet2").Range(Target.Offset(0, 1).Value).Interior.ColorIndex = 3 Cancel = True Worksheets("Sheet2").Activate End Sub
ぶらっとさん いつもありがとうございます。 これを、どう使うかは、地区の役員をしている父が、 Sheet1でクリックした人の家がすぐわかるように したいのだそうです。
やはりSheet2に条件付き書式にしてもだめなんですね・・・ 方法はどんなやり方でもいいんです。
同じSheet内にクリックする人の名前と地図を置いて 条件付書式を地図上のセルに入力したほうがいいでしょうか?
(ちぃ)
Mookさん いつもありがとうございます。
>>地図の上にマークしたいんだと思いますが、
↑そうなんです。 データがPDFだったので、JPEGにしてエクセルの背景にしました・・・ ほかの方法が思いつかなかったので。
やってみます!!
(ちぃ)
なるほど。 意図は了解。 1つには、お父上に、画面分割の方法を教えて、Sheet1とSheet2を同時に見ながら Sheet1のセルを選択してSheet2に条件付き書式で背景色を塗る仕掛けにしてもいいかましれないけど やはり使いづらいね。
Mookさんの方法がいいと思う。 で、同じ制御なんだけど、
・右クリックの代わりにダブルクリック(これは、操作しやすいほうで、どちらでも) ・Sheet2 が地図だとすると、Sheet1 に セル番地を記述しておくより たとえば、名前をA列のセルに書きこんでおく。 で、SHeet2の、各人のポジションに、その名前で名前定義をしておく。 ・Sheet1 の名前をダブルクリックすると、それに相当したSheet2のセルが色塗りになる。
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Dim r As Object Dim nm As String
If Intersect(Target, Columns("A")) Is Nothing Then Exit Sub Cancel = True nm = Target.Value If IsObject(Evaluate("Sheet2!" & nm)) Then Set r = Evaluate("Sheet2!" & nm) If TypeName(r) = "Range" Then Sheets("Sheet2").UsedRange.Interior.ColorIndex = xlNone r.Interior.Color = vbCyan End If End If End Sub
(ぶらっと)
ぶらっとさん
ありがとうございます。 確かに、名前をダブルクリックは使いやすそうです。
>・Sheet2 が地図だとすると、Sheet1 に セル番地を記述しておくより > たとえば、名前をA列のセルに書きこんでおく。 > で、SHeet2の、各人のポジションに、その名前で名前定義をしておく。
↑についてですが、 Sheet1のA列に名前を入力、Sheet2の該当する家のセルに名前を入力? ですか?
Sheet1には、名前がすでに入力してあるのでこの作業はOKそうです。
名前定義・・・とはセルに入力ではない?ということですか??
スミマセン、エクセルもマクロも初心者で専門用語?がいまいちわかりません・・・ よろしくお願いいたします。
(ちぃ)
アップしたコードは Shett1のA列に名前があると想定しているんだけど、たとえば A10 に 田中 という名前があったとする。 で、それが、Sheet2 の F10 に紐ついてるとすれば
1.Sheet2 を選択 2.F10 を選択 3.名前の定義で、名前を "田中" と設定。
または F10 を選択して エクセル左上の名前ボックスに"田中"と入れてエンター。
http://www.relief.jp/itnote/archives/000208.php
http://www.relief.jp/itnote/archives/000815.php
こうしておけば、SHeet1のA10をダブルクリックすると、SHeet2 の F10 に色が塗られる。 この利点は、今後、SHeet2側で行や列の挿入や削除があって、F10 の場所がかわっても、 名前の場所も、元の F10 の場所をさしているので、マクロコードの変更も、SHeet1側の変更も不要ということかな。
(ぶらっと)
ぶらっとさん ありがとうございます。 完成いたしました。
とても丁寧な説明でわかりやすかったです!! またひとつ勉強になりました。
いつも本当にありがとうございます。。。
(ちぃ)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.