• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセルVBAについて)

エクセルVBAで効率的な表の非表示処理を実現する方法

このQ&Aのポイント
  • エクセルVBAを利用すれば、効率的な表の非表示処理が可能です。
  • B1セルに入力された品数に応じて、指定された番号の行が残り、それ以降の行が非表示となります。
  • 品数は随時書き換えることができ、簡単に表の表示を制御することができます。

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

  • ベストアンサー
  • hananoppo
  • ベストアンサー率46% (109/235)
回答No.4

ANo.3です。シートモジュールは対象シートのシートタブを右クリックして、「コードの表示」を選択すると開きます。そこにANo.3のコードをコピーしてください。一旦ブックを保存して閉じ、再度開いてマクロを有効にすれば、B1セルの値を変更する度に表示が変わります。

aguric
質問者

お礼

度々もありがとうございます。 完璧にできました。 本当にありがとうございます。

その他の回答 (3)

  • hananoppo
  • ベストアンサー率46% (109/235)
回答No.3

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)
回答No.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("1:" & Target.Value + 2).Hidden = False Rows(Target.Value + 3 & ":" & Rows.Count).Hidden = True End Sub

aguric
質問者

お礼

丁寧なご回答ありがとうございます。 シートモジュールがわからずできませんでした。 勉強しなおします。

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.1

一例です。 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

aguric
質問者

お礼

できました。 本当にありがとうございました。 もしよろしければ、このコマンドの コントロールボタンの作り方も教えて頂けないでしょうか。