• ベストアンサー

チェックで指定行を非表示

チェックボックスでチェックしたらもしくはボタンを押したら指定行を非表示になるようにしたいのですがどなたか解る方よろしく願います。

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

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.1

下記は捨石の回答です。質問で状況が十分説明されてない(注1)と思うからです。 下記で仮定している状況が、質問例の簡単化のために、質問者がそう書いたので、実際は複雑なら、その旨を後の回答者のために、ぜひ追記してください。 ーー 例データ Sheet1で 第1行は見出しなどとして考慮除外する。 A2:B13 C列は考慮しない。 1 ーー A ーーは実際は空白セルA列。左に寄って表示されるので、入れたもの。実際はないもの。 ーー B ーー C 2 ーー A ーー B ーー C 3 ーー A ーー B ーー C とする。 シート1の「ダブル」クリックイベントに(クリックは、より多く使われると思い、こちらにした) Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Target.Column = 1 Then MsgBox Target.Offset(, 1) MsgBox Int((Target.Row - 1) / 4) + 1 If Target.Offset(, 1) = Int((Target.Row - 1) / 4) + 1 Then r = Target.Row x = (r + 1) & ":" & (r + 3) MsgBox x Rows(x).EntireRow.Hidden = True Else End End If End If End Sub を入れる。 A列第2行目、A列6行目、A列10行目などを、それぞれダブルクリックすると、3から5、7から9、11から13行目までを非表示にします。 MsgBoxはテスト用なので、本番では省いてください。 (注1)仮定が明確でない。ABCの3行と小生は仮定しているが、ABCDやABの行はないのか。 ーー チェックボックスを使っていないわけは、チェックボックスが置かれていると見えるセル(の行)が、そもそもあいまいと思うから。コントロールは、特定の行に張り付いたものではないと思う(小生の不勉強で間違っておれば、他の回答者の回答を待ちます)。すなわち特定のコントロールから、所属行を割り出せない(エクセルの)仕組みと思うから。 ーー 繰り返しのテストで非表示を解除する必要があるなら Sub test02() Rows.Hidden = False End Sub を、標準モジュールに入れて、実行してください。 ーー ボタンをトリガーにするほうほうはある。その場合は置かれたセル8アクチブセル)に全面的に頼ることになるが、セルのアクチブ場所を気にしないと、おボタンをクリックした後にアクチブセルが間違っていたなどというケースの心配をして、今回はそのコードは略。 ーー MsgBox Int((Target.Row - 1) / 4) + 1 If Target.Offset(, 1) = Int((Target.Row - 1) / 4) + 1 Then はAの上の行をクリックしたことのチェックを入れている。 また If Target.Column = 1 Then も、ダブルクリックした列のチェックのためです。

kuma0220
質問者

お礼

有難うございます。助かりました。

その他の回答 (1)

  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.2

規則性に気がつきませんでしたので(^^;) チェックボックス代替の文字で判別するコードです。ご参考まで。 コントロールを使うと設置が面倒なので、チェック有無の特殊文字(Unicode &H2610,&H2611)を使っています。SelectionChangeを使っているので、実行後次の列にActiveCellを移動して、同じセルで連続的に実行出来る?様にしてみました。 次のチェックボックスを見つけるのにRange.End(xlDown)とかではなく、Findを用いているのは、単にやってみたかっただけの理由です。エラー処理は不十分です。 Private Sub Worksheet_SelectionChange(ByVal target As Range) Dim myCell As Range, hitRange As Range 'Eventから抜ける条件設定 If target.Cells.Count > 1 Then Exit Sub If target.Column <> 1 Then Exit Sub If target.Value = "" Then Exit Sub Select Case target.Value Case ChrW(&H2610) 'unchecked target.Value = ChrW(&H2611) Set hitRange = findFollowingBlankCell(target) Application.EnableEvents = False target.Offset(0, 1).Activate Application.EnableEvents = True If Not hitRange Is Nothing Then '折り畳み For Each myCell In hitRange myCell.EntireRow.Hidden = True Next myCell End If Case ChrW(&H2611) 'checked target.Value = ChrW(&H2610) Set hitRange = findFollowingBlankCell(target) Application.EnableEvents = False target.Offset(0, 1).Activate Application.EnableEvents = True If Not hitRange Is Nothing Then '折り畳み解除 For Each myCell In hitRange myCell.EntireRow.Hidden = False Next myCell End If End Select End Sub Function findFollowingBlankCell(target As Range) As Range Dim nextCell As Range On Error Resume Next Set nextCell = target.EntireColumn.Find(What:="*" _ , After:=target _ , LookIn:=xlValues _ , LookAt:=xlPart _ , SearchOrder:=xlByColumns _ , SearchDirection:=xlNext _ , MatchCase:=False _ , MatchByte:=False _ , SearchFormat:=False) If Err.Number <> 0 Or nextCell Is Nothing Then Set findFollowingBlankCell = Nothing Else If nextCell.Row - target.Row > 1 Then With Me Set findFollowingBlankCell = .Range(target.Offset(1, 0), nextCell.Offset(-1, 0)) End With Else Set findFollowingBlankCell = Nothing End If End If End Function Wクリックで未チェックの□を入力するコードもおまけで付けます。 Private Sub Worksheet_BeforeDoubleClick(ByVal target As Range, Cancel As Boolean) If target.Column <> 1 Then Exit Sub Cancel = True If target.Value = "" Then target.Value = ChrW(&H2610) End If End Sub

kuma0220
質問者

お礼

有難うございます。

関連するQ&A

  • チェックボックスのある行を非表示にすると、チェックボックスも非表示にな

    チェックボックスのある行を非表示にすると、チェックボックスも非表示になる方法を教えて下さい。 チェックボックスが入っている行を非表示にしても、チェックボックスだけ表示され続けてしまいます。 以前どこかでチェックボックスが非表示になるプログラムがあり、表示されなかったのですが、いろいろといじっているうちに間違って削除してしまったようです。 行の非表示を解除すると(再表示を選ぶと)、チェックボックスもちゃんと表示されるものを希望しています。 ネットで検索しても再度見つける事ができませんでした。 もしお分かりになる方がいらっしゃいましたら宜しくお願い致します。

  • チェックボックスにより行の表示非表示

    Excel2007を使用し、以下のようなチェックリストを作成しました。 「□」はActiveXコントロールのチェックボックスです。 1行目:□ とくにありません 2行目:□ りんご 3行目:□ もも 4行目:□ みかん 5行目:□ ばなな 2行目にチェックが入っていれば □りんご と表示、 2行目と5行目にチェックが入っていれば □りんご □ばなな と表示、そして 2~5行目のチェックボックスにすべてチェックが入っていない場合は □とくにありません だけを表示させたいです。 どのようにマクロをくんだらいいでしょうか? ちなみに、1シートに表示されるチェックボックスはこれだけでなく、 7行目:□ とくにありません 8行目:□ いぬ 9行目:□ ねこ 10行目:□ とり と、果物、動物それぞれで同じ動作をさせたいと思っています。 IfかCaseを組めばいいのかと思っているのですが 複雑な条件文をどのように記述すればいいかわかりません。 ご教授お願いいたします!

  • チェックボックスにより行の表示非表示

    Excel2007を使用し、以下のようなチェックリストを作成しました。 「□」はActiveXコントロールのチェックボックスです。 2行目:□ りんご 3行目:□ もも 4行目:□ みかん 5行目:□ ばなな 6行目:とくにありません 7行目:りんごがすき 8行目:ももがすき 9行目:みかんがすき 10行目:ばなながすき 2行目にチェックが入っていれば 7行目:りんごがすき を表示、 2行目と5行目にチェックが入っていれば 7行目:りんごがすき 10行目:ばなながすき を表示、そして 2~5行目のチェックボックスにすべてチェックが入っていない場合は 6行目:とくにありません だけを表示させたいです。 どのようにマクロをくんだらいいでしょうか? ちなみに、1シートに表示されるチェックボックスはこれだけでなく、 11行目:□ いぬ 12行目:□ ねこ 13行目:□ とり 14行目:とくにありません 15行目:いぬがすき 16行目:ねこがすき 17行目:とりがすき と、果物、動物それぞれで同じ原理で同様の動作をさせたいと思っています。 IfかCaseを組めばいいのかと思っているのですが 複雑な条件文をどのように記述すればいいかわかりません。 ご教授お願いいたします!

  • エクセルのチェックボックスでの行の表示の切り替え

    エクセルでチェックボックスを使用して行の表示を切り替えています。 これに他のチェックボックスのON-OFFで表示する行を変えたいと思います。 例えばチェックボックスが3つあり チェックボックス3のON-OFFで行10-20を非表示と表示に切り替えている マクロがあります。 それをチェックボックス1がONの時は行11-20が非表示に チェックボックス2がONの時は10-19が非表示になるようにマクロに追加 するにはどうすればよいでしょうか? ちなみにチェックボックスはActiveXの方を使用しています。 今のコードは Private Sub CheckBox3_Click() If CheckBox3 = True Then Range("10:20").EntireRow.Hidden = False Else Range("10:20").EntireRow.Hidden = True End If End Sub です。 よろしくお願いします。

  • チェックボックスのついた行だけを削除するにはどうすればいいですか?

    あるテーブルの中身を ループさせてテーブルを作っています。 全行表示するとします。 各行の一番左にチェックボックスをつけて そこにチェックをつけて、 SUBMITボタンを押すと、 チェックをつけたものだけを除いたほかの行だけが 表示するようにしたいのですが、方法が分かりません。 どなたか簡単な例を教えてくださいませんでしょうか? 使用ブラウザ IE3.02 以上 使用言語 VBscript Windows2000

  • Excelでワンタッチで行チェックする方法

    お世話になります。 現在LibreOfficeCalcで、チェックリスト表を作っております。 ワンタッチでその行の色を変えて、チェック済みが一目瞭然になるようにしたいです。 タブレットPCで使用する想定です。 現在、チェックボックス&条件付き書式でやっているのですが、 以下の問題があります。 ・チェックボックスのコピペが出来ない ・行フィルタをかけるとチェックボックス機能しない そこで別の方法を考えております。 1.タブレットでワンタッチで行え、 2.行をフィルタで絞り込んでも大丈夫 といった方法が無いかと悩んでいます。 〆やレ点をコピペするという方法でもいいのですが、 キーボードが使えないので、出来れば チェックボックス的なものが一番いいのですが・・・ 「行の配色を変える」ボタンを設置し、ウインドウを二分割して ボタンを常に表示しておく方法もありますでしょうか? また、最新のExcel2016では出来る、 というような情報でも助かります。 何か良いアイデアがありましたらお願いします。

  • チェックボックスにチェックを入れると行が変わるようにしたい

    ビルダーV9を使っています。 ある表で、チェックボックスを入れたいのですが 入れ方そのものが分かりません。 また、チェックボックスにチェックを入れると その行に色がつくように、 また解除すると色が元に戻るようにしたいのですが やり方を教えてください! お手数ですが、よろしくお願いいたします。

  • Excel 行・列の非表示について

    コンボボックスやコマンドボタンを配置してある行や列を非表示にすると、そのコンボボックスやコマンドボタンは画面に残ったままになります。 コンボボックス・コマンドボタンごと行や列を非表示にするテクニックはありますでしょうか? ※コンボボックスやコマンドボタンは絶対に削除できない 下手な文章ですみません。 不明点はご指摘いただければ、補足にて追記させていただきます。 よろしくお願いします。

  • Excel 指定行削除マクロ

    Excel の表で、「行削除」ボタンを押したとき、次の手順で動くマクロを作りたいと思っています。 1.メッセージボックスで削除する行のクリックをうながす。 2.該当行がクリックされ、メッセージボックスのOKボタンが押される。 3.2番目のメッセージボックスに変えて、クリックされた行の A 列のセル(名称欄)   の値(○○)をボックスに取り込んで「○○を削除します」と表示させる。 4.OKボタンが押されたら、その行全体を削除する。 なるべく簡便な方法を教えてください。よろしくお願いします。

  • 新規行のDataGridBoolColumnのチェックをはずしたい

    VB.NET2002を使用しております。 DataGridでDataGridBoolColumnにDataSetのBoolean型を連結しています。 このとき,DataGridの新規行をクリックすると, 半透明のチェックボックスにチェックが入った状態になるのですが,これをチェックが入っていない状態で表示したいのですが,どのようにすれば良いかご存知でしたらお教えください。 DataGridBoolColumn.AllowNull = False なども試しましたが,うまく行きませんでした。 よろしくお願い致します。

専門家に質問してみよう