• ベストアンサー

色のついていない行を非表示にしたい

ワークシートAにコマンドボタンをレイアウトして、ワークシートBの色のついているセルがない行を非表示にしたいのですがうまくいきません。 添付画像であれば、2,6,7の行を非表示にしたいのですがどのようにすればよいか、VBAを教えてください。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • watabe007
  • ベストアンサー率62% (476/760)
回答No.2

With Worksheets("B")  Set myRang = .Cells.SpecialCells(xlCellTypeConstants) これはSpecialCells メソッドを使ってシートBの定数が含まれているセル範囲を 変数myRangに格納しています。 myRang.Select で確認できるでしょう >ワークシートの範囲は関係ないですか? 範囲が大きすぎたりすると取得できずにエラーが出ることが有るようです。  取得したmyRow範囲を行単位にループします。  For Each myRow In myRang.Rows   さらにmyRow行の中をセル単位でループします。   For Each c In myRow    セルが白色、もしくは無色以外であればフラグに印(True)をつけ    If c.Interior.Color <> vbWhite Then flg = True   Next    フラグがFalseならば色つきのセルが無かった事なのでその行は非表示   If flg = flase Then myRow.EntireRow.Hidden = True   次の行をチェックの為、フラグをFalseに   flg = False  Next End With

makisaori
質問者

お礼

ありがとうございました。 動きみながらコマンド調べて少しずつ勉強してます。 とてもよくわかる解説、ありがとうございました。 また次回質問したら宜しくお願いします。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • watabe007
  • ベストアンサー率62% (476/760)
回答No.1

参考に Sub Test() Dim myRow As Range, c As Range, flg As Boolean With Worksheets("B") Set myRang = .Cells.SpecialCells(xlCellTypeConstants) For Each myRow In myRang.Rows For Each c In myRow If c.Interior.Color <> vbWhite Then flg = True Next If flg = flase Then myRow.EntireRow.Hidden = True flg = False Next End With End Sub

makisaori
質問者

補足

ありがとうございました。うまくいきました。 ワークシートの範囲は関係ないですか? 命令文の横にコメントで動作の解説を入れて貰えるとすごく勉強になります。 お願いできますでしょうか?

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • Excelマクロである条件のセル間(行方向)に色を付けたい

    Excelマクロである条件のセル間(行方向)に色を付けたい 例えば、エクセルのあるセルに"A"が書かれていた場合、次にその行のセルに"円"と書かれているまでは、続く行のセルには色をつけるようにしたいのですが、良い方法を教えて頂けないでしょうか? 対象となるシート(列方向)に、今回のパターンが複数存在し、 それぞれにこの処理を実施することを想定しております。 (イメージ画像を添付します) お恥ずかしい話、当方VBAには明るくありませんので、簡単なサンプルコードを示して頂けると幸いです。

  • 色付き行の非表示について

    いつもお世話になっております。 以前こちらで同様の質問が投稿されておりまして、そちらの回答を参考に(原文ほとんどそのままですが・・・)行折りたたみをしていたのですが、 もう少し改良出来るのではないかと思いご相談です。 参考質問は、かなり前に検索をしたので再検索出来なかったのですが・・・ 現在、 8行目からデータが入っております。 非表示にしたい行には任意の色で1行全体を色付けしています。 色のついていない行のみ 表示をします。 Sub hidden1() x = ActiveCell.SpecialCells(xlLastCell).Row y = ActiveCell.SpecialCells(xlLastCell).Column For i = x To 8 Step -1 For n = 1 To y If Cells(i, n).Interior.ColorIndex <> xlNone Then Rows(i).Hidden = True Next n Next i End Sub こちらですと、すべてのセルを検索し、行の非表示をしていると思います。(VBAの知識が無いので 間違っているかもしれません) 現在データ量は300行程ですので そんなに時間はかからないのですが、今後1000行、2000行と増えた場合の事を考え改良したいと思いました。 非表示にしたい行のA列には必ず色がついているので A列を検索し、色がついていればその行を非表示。 というようにする場合 上記どこの文を削れば良いのでしょうか? 出来れば 表示⇔非表示をボタン1個で切り替えられればと思っております。 もし、A列に非表示があれば表示する、 もし、A列に非表示がなければ色付き行を非表示にする というようなマクロを教えていただければ幸いです。 よろしくお願いいたします。 

  • 色なし行のコピー

    sheet1にA1:E700の表が有り、B列からE列までセルを黄色にした行がランダムに幾つも有ります。このとき、sheet2のA1から上に詰めて色なし行だけをコピーする記述教えてください。(例えば3行目がB列からE列まで黄色のセルだったら3行目はコピーしない)、よろしくお願いします。

  • Excelで指定する行と列に対応する値を表示させる方法

    このような事は可能なのでしょうか。下記のような別シートに表があり、メインシートのほうでAセル,Bセルに数字をいれてやると、別シートの対応する値を表示させることはできるのでしょうか。今回の場合ですと2の3ですから「く」を表示すという具合で。 できればまだまだ初心者なのでVBAではない方法がよいのですが、よろしくお願いします。説明不足で申し訳ないです。 ※(別シート)  Aセル Bセル Cセル Dセル Eセル    1   2    3    4   5  (1行目) 1  あ  い    う   え   お  (2行目) 2  か  き    く   け   こ  (3行目) 3   さ  し    す   せ   そ  (4行目) ※(メインシート) Aセル Bセル Cセル   2   3   く   

  • Excel 2010 -ボタン押下時、行挿入-

    いつも皆様の質問や回答を拝見し、Excelの勉強をさせていただいている者です。 今回、画像添付のようなシートがありコマンドボタンを押したときにA1行をコピー・ コマンドボタンがある位置を取得し、その行にコピーした行を挿入したいと考えております。 行をコピーし挿入するVBAは解るのですが、コマンドボタンが押された時にボタンの行位置を 取得する方法を調べることが出来ませんでした。 ちなみにコマンドボタンは全部で20個位あります。 皆様の知恵をお借りしたく質問させていただきました。 よろしくお願いします。

  • 複数選択したセルを含む行をまとめてコピー

    VBA初心者です。EXCEL2003を使用しています。 ◆やりたい事  ユーザーにセルを指定させ、そのセルを含む行をまとめてコピーして新規のブックに貼り付けたい。 ◆条件  ・ユーザーが指定できるセルはB列だけにしたい。   (B列以外を選択したらメッセージを表示して再選択させる)  ・ユーザーが指定できるセルは(連続・不連続問わず)最大8個までにしたい。   (未選択 or 8個以上ならメッセージを表示して再選択させる)   ◆完成イメージ  ・ユーザーがセル(ex.B4,B6:B8,B20(=計5行))を選択  ・マクロ実行(コマンドボタンを押す)  ・新規ブックのsheet1.range("A1")に貼り付け(=A1:A5に 貼り付く) こんな感じなんですが、なにとぞ御教授願います。

  • VBA ボタンを押すと別シートの2行を抽出表示

    どなたかおしえてください。 業務の関係で エクセルで3つほどボタンを作成しました。 (1)のボタンを押すと Sheet1、Sheet2、Sheet3 のそれぞれの シートの「A行」「B行」セルをボタンがあるシートの A行セルから横に順番にはりつけていきます。 (2)のボタンを押すと、今埋まってる内容をクリアして、(例えば(1)のボタンを押した後など) Sheet1、Sheet2、Sheet3 のそれぞれの シートの「C行」「D行」セルをボタンがあるシートの A1セルから順番にはりつけていきます。 (3)のボタンを押すと、今埋まってる内容をクリアして、(例えば(1)や(2)のボタンを押した後など) Sheet1、Sheet2、Sheet3 のそれぞれの シートの「E行」「F行」セルをボタンがあるシートの A1セルから順番にはりつけていきます。 (1)ボタンも何かうまっていればクリアした後にこの操作ができるマクロをくみたいのですが、 どなたかプログラムをおしえてください。 業務上これができないと大変困る内容なので。 知っているかたがいましたら教示ねがいます。

  • 色つき行を非表示にしたい。

    お世話になっております。 エクセル(2007)で悩んでいます。 月ごとのカレンダーをつくっているのですが、 A列は日付、B列はWEEKDAY関数で曜日を入れてあります。 C列以降は備考欄にしています。 土日祝日は日付と曜日を色つきセルにして、わかりやすいようにしてるのですが、この色つきセルの行を非表示にしてしまいたいのですが、どのようなマクロが使用できるのでしょうか、ご教示ください。

  • Excel VBA B列を検索して1行下をコピぺ

    はじめまして。 VBAを始めたばかりですが、自分ではどうにもならないので、教えていただければと思い、初めて質問致します。 A1~G1、1行目から1000行目まで各セルに数字がランダムに1つずつ入っているデーターSheet1があり、コマンドボタンを押すことによってMsgBoxに入力した数字をB列を下に検索していき、例えば、数字の8が入力されたら、B1から下にB列に8が出現したらそのセルの1つ下の行(A列~G列まで)をコピーしてSheet2に抽出したいと考えているのですが、なかなか出来ず、困っています。 イメージとして A B C D E F G H I 1 5 14 30 25 30 3 9 2 22 34 6 7 29 49 3 3 1 8 20 4 10 6 45 4 30 15 34 50 2 5 9 5 11 8 45 7 6 20 1 6 40 8 48 25 36 4 10 7 21 22 30 28 6 7 36 8 2 3 50 2 1 43 6 と、データがSheet1に仮にあって、8が入力されたなら4行目の 30 15 34 50 2 5 9 と 6行目 40 8 48 25 36 4 10、7行目 21 22 30 28 6 7 36という様に抽出されてSheet2に 上から順に貼り付けられる様にしたいので、皆様の御知恵をお貸しいただければと 思っております。かなり複雑かとは思いますが、どうか宜しくお願いいたします。 FINDやOFFSET、IF文、ループ等を使ってみましたが私のレベルでは全く話になりませんでした。 まだVBAかけだしなもので、なるべ簡単なくプログラムでお願いいたします。

  • 複数シートの行の表示、非表示

    複数のシート(形態は同じ)を選んで、行の表示、非表示をする方法を教えてください シートは15枚あります ユーザーフォーム内のコマンドボタン1をクリックすると左から10枚を選んで各シートのB列とD列を非表示にする(他は表示) ユーザーフォーム内のコマンドボタン2をクリックすると左から10枚を選んで各シートのF列とG列を非表示にする(他は表示) としたいのですが、よろしくお願いします。

このQ&Aのポイント
  • GX7030 プリンタがオフラインになる場合、コンパネのプリンタは正常に認識していることを確認してください。
  • オフラインになったプリンタの対応方法を教えてください。
  • キヤノン製品のGX7030 プリンタがオフラインになる場合、コンパネの状態を確認し、正常に認識されているかどうかを確認してください。
回答を見る

専門家に質問してみよう