- ベストアンサー
エクセルの書式設定(1行おきにパターン)
エクセエル2000 です。 表で1行おきにパタンーン(斜線)をつけたいと思い 条件付書式で =MOD(ROW(),2) を設定しました。 一応完成。 しかし、都合である行を非表示にする必要になり1行非表示にすると 1行おきのパターンが崩れてしまいます。 行を非表示にしても1行おきのパターンを崩さない方法はありますか? よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 >思ったとおりのことが、出来ました~。 良かったですね。 >本屋でテキストを購入してみます。 説明不足でしたが、現在販売されている書籍では難しいかも知れません・・・。 提示させて頂いた「GET.CELL関数」は通常の「CELL関数」 とは違いExcel2000以降はヘルプには記載されていない 「4.0マクロ関数」と云うシート上では使用出来ない特殊 な関数です。 以前のバージョンとの互換性のためだけに残されている機能です。 注1、名前定義をする事で使用可能(直接は使用不可) 注2、単独では「再計算」の対象にならない 注3、Excel2000以降にはヘルプが無い 注4、今後のバージョンでは使用不可能になる可能性がある 等々の問題が在ります。 >1.CELL(17,G1) 検査の種類 17の意味は? CELL関数では無く「GET.CELL関数」になりますが GET.CELL(17,G1)の検査の種類 17 は 行の高さ (単位はポイント数)を返します。 非表示の行は「0」が返ります。 =(行<>0)+G1 で「0」以外、つまり表示された行数を加算させてます。 表示された行だけに「1,2,3,4,5・・・」 と連番が表示されます。 >2.NOW()*0 NOW()は、シリアル値? *0 >は、0 ゼロにならないのですか? 「0」になります。 「GET.CELL関数」単独では「再計算」されないために 「NOW関数」で再計算させるのが目的で付加しているだけ なので元の数値を変化させないように「0」を加算しています。 >3.ヘルプには GETがありませんが、どういう意味ですか? EXCEL97以前のバージョンのCD内には「4.0マクロ関数」の ヘルプ「Xlmacr8.hlp」が在るには在るのですが・・・ 英語版なら下記URLからDL出来ます。
その他の回答 (2)
- imogasi
- ベストアンサー率27% (4737/17069)
下記を標準モジュールに貼り付ける。 Sub test02() d = Range("A65536").End(xlUp).Row Range(Cells(1, "A"), Cells(d, "G")).Interior.ColorIndex = 0 j = 0 For i = 1 To d If Rows(i).Hidden <> True Then j = j + 1 If j Mod 2 = 0 Then Range(Cells(i, "A"), Cells(i, "G")).Interior.ColorIndex = 6 End If End If Next i End Sub ある行を非表示にしたら、再実行が必要です。 列非表示にした、というイベントを捉えるのは、エクセルVBAではできないと思いますので、人間の行為(実行)に頼らざるを得ません。 上記の実行をコマンドボタンのClickイベントにする事は簡単で、そのほうが使いやすいでしょうが。
お礼
早速の回答ありがとうございました。 #1さんの回答で数式の意味は理解できませんが、 表は完成しました。 また、ご教授いただきました上記モジュールについては 追って勉強させていただきます。 ご指導ありがとうございました。 今後もよろしくお願い申し上げます。
- boy_boy
- ベストアンサー率55% (56/101)
こんにちは。 行の表示・非表示を切り替えた際に「F9」キーによる 「再計算」と作業列が必要になりますが・・・ 作業列(仮にG列として)のG1セルを選択して 「挿入」⇒「名前」⇒「定義」 「名前」欄に任意の名前(仮に「行」)を付けます。 「参照範囲」に 「=GET.CELL(17,G1)+NOW()*0」としてOK。 G1セルに「1」を入力。 G2セルに 「=(行<>0)+G1」として下へフィルコピー。 範囲選択して「条件付書式」で 「数式が」 「=MOD($G2,2)=0」として「パターン」を設定。 任意の行の表示・非表示を切り替えて「F9」キーで 「再計算」させてみてください。
補足
ありがとうございました。 昨夜回答を頂いた後、早速表に反映してみました。 思ったとおりのことが、出来ました~。ありがとうございます。 でも、なぜ出来るのかわからずExcelのヘルプで関数を調べましたが、 意味がわかりません。 大変恐縮ですが、お時間のあるときで結構ですので、ご教授いただけたらと 改めてお願い申し上げます。 1.CELL(17,G1) 検査の種類 17の意味は? 2.NOW()*0 NOW()は、シリアル値? *0 は、0 ゼロにならないのですか? 3.ヘルプには GETがありませんが、どういう意味ですか? ヘルプだけでは、無理なようなので本屋でテキストを購入してみます。
お礼
大変ご丁寧なご回答ありがとうございました。 「GET.CELL関数」 ヘルプにもないんですね。 書籍も難しいとの事ですので、今回は意味のわからないまま お教えいただきました方法を表に使わせていただきます。 機会があったらGET.CELL関数について勉強してみます。(難しいかな) 大変ありがとうございました。