重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

仕事でエクセルを使う事が多く、特に列、行がたくさんある一覧を表を日常業務で使っています。そこで選択セルの行全体が色付けされるような仕組みを作りたく。(イメージ的には、今触っているセルがどの行なのか目で追い易くする感じです)このようなマクロを作りました。ただ、これでは元々色が付いているセルの色が、色無しに変化してしまう為、使えません。使っている表の元々の色を変化させずに、色で簡単に行全体を目で追えるようにするにはどうしたら良いでしょうか?本当に申し訳ないですが、わかる方いらっしゃいましたら、ご教授お願い致します。

Public m
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
 If m <> 0 Then
  Range(Cells(m, 1), Cells(m, 256)).Interior.ColorIndex = xlNone
 End If
 Range(Cells(Target.Row, 1), Cells(Target.Row, 256)).Interior.ColorIndex = 6
 m = Target.Row
End Sub

A 回答 (5件)

定番のリンク先として


『アクティブセルのある行・列を目立たせる』
http://www.relief.jp/itnote/archives/001406.php
があります。条件付き書式と組み合わせる手法です。

LineShapeについては
http://oshiete1.goo.ne.jp/qa2301115.html
のNo.5のご回答が完成度が高いと思います。
    • good
    • 0
この回答へのお礼

『アクティブセルのある行・列を目立たせる』拝見しました。
こんな方法があったなんて。すごいとしか言い様がないです。
ありがとうございました。

お礼日時:2008/12/02 19:36

No.1です。


えっと・・・
「元々ある表に色が付いている行があります。それを選択した時は
黄色になります。他の行を選択したらもともとの行の色を戻したい」
ということですか???

Public m, n
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If m <> 0 Then
Range(Cells(m, 1), Cells(m, 256)).Interior.ColorIndex = n
End If
m = Target.Row
n = Target.Interior.ColorIndex
Range(Cells(Target.Row, 1), Cells(Target.Row, 256)).Interior.ColorIndex = 6

End Sub
    • good
    • 0
この回答へのお礼

何度もご教授ありがとうございます!!
色々勉強になりました。
ただ、今回はNo.5の方の方法を使わせて頂きました。

お礼日時:2008/12/02 19:38

No.1です。



コメントというのは'(シングルコーテーション)をつけることです。
'If m <> 0 Then
と書いた場合、この処理は無視されます。

再度この処理を行いたいと思ったら'を外せば良いので
処理自体を削除するのではなく、コメントにしたほうが
後々楽です。
    • good
    • 0
この回答へのお礼

なるほど。ただ今やってみましたが、どうもうまくいきません。
色が付いて元に戻らないです・・なんとも難しい依頼で申し訳ありません。

お礼日時:2008/12/02 14:54

色をつける前に、もとの色を控えておいて後で元に戻すというのが通常でしょうが、1行全部が同じ色でないとすると、256セル分色を記録して・・・というのもちょいと面倒ですね。


一応、この方法でも対応可能だと思われますし、対象を表示中のセルに限定すれば、処理を減らせるので速度も向上すると思われます。


一方、ご質問の内容を読むと、必ずしもセルの色を変えなくても、横にガイドとなる色ものがあれば良いとも考えられますので、以下のようなアイデアではいかがでしょうか。
(セルをいじらないでガイドを作ることを考えて見ました)

オートシェイプなどで枠線のみ(中を透明にしておけば下にあるセルの選択が可能)にして、太線で色をつけたものを用意。印刷しないなどの設定をしておく。
シートチェンジ時にセル高さ、表示幅に合わせてシェイプの高さ、幅を設定し、対象行の画面左端に合わせて表示する。
(高さはプラスアルファしておいたほうが良いかも)
操作時に間違って、枠線をクリックすると枠線が選択されてしまいますので、このシェイプには「選択解除して戻す」だけのマクロを設定しておくなどすると良いかも。

あと、画面を横スクロールしたときに、シェイプがついてゆくようにする必要があるのかも・・・
    • good
    • 0

こんにちは。


どうやら、選択された際に現在の行と前に選択された行の比較を行っているようなので、その処理を行っている
If m <> 0 Then
  Range(Cells(m, 1), Cells(m, 256)).Interior.ColorIndex = xlNone
 End If
の部分をコメントにすれば、元々色がついているセルはそのままです。

というのが欲しい答えでしょうか?
    • good
    • 0
この回答へのお礼

早速のご回答ありがとうございます。おっしゃる通りです。
ただ、コメントにするというのはどういう事でしょうか?勉強不足で申し訳ありません。ご教授お願い致します。

お礼日時:2008/12/02 13:46

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!