[[20170818204010]] 『空白行を一つのボタンで非表示、再表示させる方法』(広徳) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『空白行を一つのボタンで非表示、再表示させる方法』(広徳)

漠然とした質問なんですが、教えてもらえると助かります。
イメージとして、1行目から30行目の空白の行をボタン一つで非表示にして、もう一度押すと再表示できないでしょうか?非表示用、再表示用それぞれのボタンではなく、一つでやりたいです。
何方か教えてください。

< 使用 Excel:Excel2016、使用 OS:Windows10 >


空白の行というのは、特定の行で固定ですか、それとも増減するのですか

(マナ) 2017/08/18(金) 20:54


 横から失礼します。

 マナさんの質問の回答にもよりますが、True/Falseの切替えは↓のように一つこコードで切り替えられます。

 ○ = Not ○
(カリーニン) 2017/08/18(金) 21:08

データが表示されてるかされてないかで、表示されている行に例えば数字の1、逆は0とかで判断してはどうかと。
(広徳) 2017/08/18(金) 21:13

 こんばんわ。

 ちょっと発言これだけになると思うので中途半端で申し訳ありませんが、

 >非表示用、再表示用それぞれのボタンではなく、一つでやりたいです。
 これは2つのボタンでなら記述出来ると言う事ですか?
 ならそのコードを掲示されてはどうでしょうか。
 その方が回答者も何処を修正すれば良いかアドバイスしやすいです。

(sy) 2017/08/18(金) 21:34


>判断してはどうかと。

ちょっと意味がわかりません。
その後に続く省略された文章は何でしょうか?

(マナ) 2017/08/18(金) 21:46


 空白セルは
 ジャンプ→空白セル
 で指定できます。

 指定の仕方はマクロの自動記録が参考になると思います。
(カリーニン) 2017/08/18(金) 21:53

データが表示されている行を1、されていない空白の行を0とする
これを元にボタンで非表示にしたり、表示するということです。
(広徳) 2017/08/18(金) 22:03

了解です。返事ではなく、最初の質問文への追加コメントということですね。

では、その列でフィルターで1のみ抽出するだけでは?
表示のときは「すべて選択」にチェックすればよいです。
ボタンなしでできませんか。

(マナ) 2017/08/18(金) 22:17


出来るなら、ボタンを使いたいです。
お願いします。
(広徳) 2017/08/18(金) 23:07

こんな感じにするとボタン1個でできませんか
 if A1:A31の可視セルの数が30個以下ならば
    再表示を実行
 else
    非表示を実行
 end if

(マナ) 2017/08/19(土) 09:00


マナさん、再表示と非表示の実行には、実際にはどんなマクロが入るでしょうか?
(広徳) 2017/08/19(土) 16:19

  横から失礼します。

 >再表示と非表示の実行には、実際にはどんなマクロが入るでしょうか?

 マクロの自動記録で取れませんか?
 ネット検索でも幾らでもヒットすると思いますが。
(カリーニン) 2017/08/19(土) 16:24

ご自分の言いたいことだけを言うのではなく
回答者側からの問いかけにはちゃんと返事したほうがよいと思いますよ。

 Option Explicit

 Sub test()
    Dim rr As Range
    Dim r As Range

    Set rr = Rows("1:30")

    With rr.Resize(, rr.Rows.Count + 1)
        If .Columns(1).SpecialCells(xlCellTypeVisible).Count < .Rows.Count Then
            .Hidden = False
        Else
            For Each r In rr
                If WorksheetFunction.CountA(r) = 0 Then r.Hidden = True
            Next
        End If
    End With

 End Sub

(マナ) 2017/08/19(土) 17:06


間違い発見

 >With rr.Resize(, rr.Rows.Count + 1)
           ↓
   With rr.Resize(rr.Rows.Count + 1)

(マナ ) 2017/08/19(土) 17:15


すみません。こちらの思いばかりで。

マナさんからの質問
 Q 空白の行というのは、特定の行で固定ですか、それとも増減するのですか
 A 特定の行ですが、固定ではありません。例えばですが、1行目から30行目の中で、0が表示された行を非表示にしたいです。

syさんからの質問
 Q これは2つのボタンでなら記述出来ると言う事ですか?

    ならそのコードを掲示されてはどうでしょうか。
    その方が回答者も何処を修正すれば良いかアドバイスしやすいです。
  A あくまで1つのボタンで切り替えしたいです。自分なりのコードを作成しないままの質問となってしまいまし  た。すみません。

マナさん、具体的な様式を今までかかって作成しておりました。回答や返事をきちんとせず、申し訳ありません。実際には、BF列の54行目から73行目に0または1の数字が入る形としました。どのような修正が必要になるでしょうか。また、ボタンで表示、非表示を切り替える際に、シートの保護を外す作業まで行うとすれば、どのような修正が必要でしょうか。
質問ばかり、申し訳ありません。よろしくお願いします。遅くに申し訳ありません。
(広徳) 2017/08/20(日) 02:56


これで試してください

 Option Explicit

 Dim 次は再表示 As Boolean

 Sub test2()
    Dim r As Range
    Dim c As Range

    ActiveSheet.Unprotect

    Set r = Range("BF54:BF73")

    If 次は再表示 Then
        r.EntireRow.Hidden = False
        次は再表示 = False
    Else
        For Each c In r
            If c.Value = 0 Then c.EntireRow.Hidden = True
        Next
        次は再表示 = True
    End If

    ActiveSheet.Protect

 End Sub

(マナ ) 2017/08/20(日) 09:48


マナさん、ありがとうございました。
思い通りに動いていて、すごいです。
ありがとうございました。

(広徳) 2017/08/20(日) 22:54


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.