- ベストアンサー
Excelシートの行列欄の色を変更するには?
こんにちは 別々の2シートを画面に並列に表示して作業をしていますが、この時にアクティブシートがわかりにくい。(2画面共がグレー色) わかりやすくするために行(1,2,3…)の場所、列(A,B,C…)の場所をグレー色から別の色に変更したいです。アクティブのときのみ。シート名の色変更はできるのですが、これでは見づらいです。 Excelでは、不可能なんでしょうか?可能ならば、VBAでしたいと考えています。 ずいぶん試行錯誤をいたしましたが、解決いたしません。 いかがでしょうか?よろしくお願いします。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
回答No.5の回答内容を書いている途中に、回答No.4に対する補足コメントが投稿されていたようですが、 >Excel2010です という事であれば、 Worksheets("請求書").Activate ActiveWindow.NewWindow Worksheets(SheetN).Activate Windows.Arrange ArrangeStyle:=xlArrangeStyleVertical の様なVBAで2画面表示とした場合には、外枠(列番号欄や行番号欄ではない)の色がアクティブシートのみがグレーとなって、アクティブではないシートの外枠は白色で表示される筈ですので、再度御確認下さい。 あくまで、 >行(1,2,3…)の場所、列(A,B,C…)の場所 の事では御座いませんので、お間違えの無き様に願います。 ※Excel2013の場合には外枠が表示されない様ですので、回答No.2様のご意見は間違ってはおりません。
その他の回答 (5)
- kagakusuki
- ベストアンサー率51% (2610/5101)
>上記のようなVBAですが、やはり2画面ともグレーでした。 どうやらExcelのバージョンの違いのため、質問者様が御使いのものと当方が使用しているものとでは表示の仕方が異なっている様です。 それで、 >行(1,2,3…)の場所、列(A,B,C…)の場所 の色を変更する方法に関しては私には解りかねますので、その代わりとしてセルの枠線の色を変える事でアクティブシートの区別がつく様にするという方法は如何でしょうか? 以下のVBAの構文を標準モジュールではなく、ThisWorkbookモジュールに入力してみて下さい。(但し、bookが保存される際には、枠線の色が変わったままで保存されますので、その点は御容赦願います) Private Sub Workbook_WindowResize(ByVal Wn As Window) ActiveWindow.GridlineColorIndex = 5 End Sub Private Sub Workbook_WindowActivate(ByVal Wn As Window) Dim i As Integer For i = 1 To ActiveWorkbook.Windows.Count Windows(i).GridlineColorIndex = 0 Next i ActiveWindow.GridlineColorIndex = 5 End Sub 因みに、上記のVBAではアクティブシートのセルの枠線の色が青色に変わる様になっておりますが、他の色にされたい場合には、2箇所ある ActiveWindow.GridlineColorIndex = 5 という箇所の数値の5を、他の数値に変更して下さい。
補足
kagakusuki さん お世話になります。セルの枠線の色を変える方法を試しましたが、今ひとつすっきりしなかったものでしたので、やめました。 まだ、Excelファイル作成中ですので、更に試行錯誤してみます。 (行(1,2,3…)の場所、列(A,B,C…)の場所の色を変更する方法に関しては、Excelの仕様で無理かどうかも含めて…) ありがとうございました。
- kagakusuki
- ベストアンサー率51% (2610/5101)
>それは一体どの様なやり方で2画面にした場合の事なのでしょうか? つまり、質問者様が仰っておられる >2シートの画面表示にした直後(VBAで1画面から2画面にする)はいずれもグレーの状態 という状態が再現できないため、どの様な状況になっているのかが解らないのです。 どの様な状況なのかという事や、どうしてその様な状況となったのかといった事が不明なため、対処方法を考える事が出来ない訳です。
補足
標準モジュールにkagakusukiさんの Sub Macro ~ endsubをコピーして試しましたが、現れた画面は2画面とも、やはりグレーでした。 Excel2010です。 シート1をシート最後尾に新シートを作成して、シート1をコピーしてシート名に「年月日+シート1」としています。 今回、シート1の変更に伴い、新コピーも更新するために画面を2面にしています。 (userform内にリストボックスを設定して、ブック内の全シートを表示し、更新したいシートを1個選ぶ) 今後、コピーしたシートが最後尾に増えていく予定です。
- kagakusuki
- ベストアンサー率51% (2610/5101)
>2シートの画面表示にした直後(VBAで1画面から2画面にする)はいずれもグレーの状態です。 との事ですが、それは一体どの様なやり方で2画面にした場合の事なのでしょうか? 通常であれば、 >別々の2シートを画面に並列に表示 という画面表示とする際には、 Sub Macro() Worksheets("Sheet1").Activate ActiveWindow.NewWindow Worksheets("Sheet2").Activate Windows.Arrange ArrangeStyle:=xlVertical End Sub などの様にします。 そして、この様なやり方で2シートを画面に並列に表示させた際には、 >マウスでアクティブにしたいシートをクリック という操作をせずとも(何もしなくても)最初から >「各シートのウィンドウの外枠」の部分の色は、アクティブシートのみグレーとなっていて、アクティブではないシートでは白色 という状態になっています。
補足
Worksheets("請求書").Activate ActiveWindow.NewWindow Worksheets(SheetN).Activate Windows.Arrange ArrangeStyle:=xlArrangeStyleVertical 上記のようなVBAですが、やはり2画面ともグレーでした。なお、SheetNはシート名の変数です。
- msMike
- ベストアンサー率20% (364/1804)
比較的最近に Excel 2013 を使い始めた私も wellfield に同感です。 既に『「各シートのウィンドウの外枠」の部分の色は、アクティブシートのみグレーとなっていて、アクティブではないシートでは白色となっていますから、その色の違いでで区別されると良い』とのご回答がありますが、率直に言って、それは説得力に欠けるコメントだと思いました。 もっと良いご提案を、私も待っています。 wellfield さん、質問してくれてありがとうございました。
- kagakusuki
- ベストアンサー率51% (2610/5101)
>行(1,2,3…)の場所、列(A,B,C…)の場所 の色は仰る様にどちらもグレーですが、 >別々の2シートを画面に並列に表示して という状態で、アクティブシートかどうかを見分けるのでしたら、「行(1,2,3…)の場所、列(A,B,C…)の場所」の様な同じ色となっている所で見分けようとするのではなく、アクティブシートだけ異なる色で表示されている所で見分ければ済む話ではないかと思います。 「行(1,2,3…)の場所、列(A,B,C…)の場所」の更に外側の「各シートのウィンドウの外枠」の部分の色は、アクティブシートのみグレーとなっていて、アクティブではないシートでは白色となっていますから、その色の違いでで区別されると良いと思います。
補足
kagakusukiさん 早速にありがとうございます。 おっしゃられることは確かですが、2シートの画面表示にした直後(VBAで1画面から2画面にする)はいずれもグレーの状態です。マウスでアクティブにしたいシートをクリックして初めて、おっしゃられる状況ができます。そうではなく、2画面表示になった瞬間にシートをアクティブにしたいんです。
お礼
この質問の正解はいろいろ試行錯誤の結果、Excelそものに機能がないようですので、あきらめます。 これにて今回の質問は、完全解決ではありませんが、終わらせていただきます。 kagakusukiさん 、msMikeさん ありがとうございました。