- ベストアンサー
エクセルVBAで効率的な表の非表示処理を実現する方法
- エクセルVBAを利用すれば、効率的な表の非表示処理が可能です。
- B1セルに入力された品数に応じて、指定された番号の行が残り、それ以降の行が非表示となります。
- 品数は随時書き換えることができ、簡単に表の表示を制御することができます。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
ANo.3です。シートモジュールは対象シートのシートタブを右クリックして、「コードの表示」を選択すると開きます。そこにANo.3のコードをコピーしてください。一旦ブックを保存して閉じ、再度開いてマクロを有効にすれば、B1セルの値を変更する度に表示が変わります。
その他の回答 (3)
- hananoppo
- ベストアンサー率46% (109/235)
ANo.2です。ANo.2のコードだとエラーになる場合がありますので、次のように訂正します。 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address <> "$B$1" Or Not IsNumeric(Target.Value) Then Exit Sub If Target.Value < 1 Or Target.Value > Rows.Count - 2 Then Exit Sub Rows(Target.Value + 3 & ":" & Rows.Count).Hidden = True Rows("1:" & Target.Value + 2).Hidden = False End Sub 4行目と5行目を入れ替えただけなのですが、原因は不明です。
- hananoppo
- ベストアンサー率46% (109/235)
対象シートのシートモジュールに次のコードをコピーしてください。 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address <> "$B$1" Or Not IsNumeric(Target.Value) Then Exit Sub If Target.Value < 1 Or Target.Value > Rows.Count - 2 Then Exit Sub Rows("1:" & Target.Value + 2).Hidden = False Rows(Target.Value + 3 & ":" & Rows.Count).Hidden = True End Sub
お礼
丁寧なご回答ありがとうございます。 シートモジュールがわからずできませんでした。 勉強しなおします。
- mu2011
- ベストアンサー率38% (1910/4994)
一例です。 Sub sample1() If Range("B1") = "" Then Exit Sub Application.ScreenUpdating = False Rows().Hidden = False For Each c In Range("A3:A1000") If c = "" Then Exit For If c = Range("B1") Then Rows(c.Row + 1 & ":" & Cells(Rows.Count, 1).End(xlUp).Row).Hidden = True Exit For End If Next Application.ScreenUpdating = True End Sub
お礼
できました。 本当にありがとうございました。 もしよろしければ、このコマンドの コントロールボタンの作り方も教えて頂けないでしょうか。
お礼
度々もありがとうございます。 完璧にできました。 本当にありがとうございます。