Я предполагаю, что вы проверяете ячейку G20
, чтобы скрыть / показать строки. Итак, мы собираемся сделать это:
Сначала измените код в вашем объекте рабочего листа для этого:
Option Explicit
Private Sub Worksheet_Calculate()
With Application
.ScreenUpdating = False
.EnableEvents = False
End With
HideRows Me.Range("G20"), Me
With Application
.ScreenUpdating = True
.EnableEvents = True
End With
End Sub
Это вызовет другую процедуру, которая будет содержаться в таком модуле:
Option Explicit
Sub HideRows(CellValue As Long, ws As Worksheet)
With ws
Select Case CellValue
Case 0
.Rows("27:64").EntireRow.Hidden = True
Case 1
.Rows("27:29").EntireRow.Hidden = False
.Rows("31:42").EntireRow.Hidden = False
.Rows("52:64").EntireRow.Hidden = False
.Rows("43:45").EntireRow.Hidden = True
.Rows("46:51").EntireRow.Hidden = True
.Rows("30:30").EntireRow.Hidden = True
Case 2
.Rows("27:29").EntireRow.Hidden = False
.Rows("31:45").EntireRow.Hidden = False
.Rows("52:64").EntireRow.Hidden = False
.Rows("46:51").EntireRow.Hidden = True
.Rows("30:30").EntireRow.Hidden = True
Case 3
.Rows("27:31").EntireRow.Hidden = False
.Rows("31:42").EntireRow.Hidden = False
.Rows("46:51").EntireRow.Hidden = False
.Rows("43:45").EntireRow.Hidden = True
Case 4
.Rows("27:31").EntireRow.Hidden = False
.Rows("32:45").EntireRow.Hidden = True
.Rows("52:64").EntireRow.Hidden = True
.Rows("46:51").EntireRow.Hidden = False
Case 5
.Rows("27:64").EntireRow.Hidden = False
End Select
End With
End Sub
Таким образом, вы можете использовать код для нескольких листов, если они построены одинаково, вам нужно будет только скопировать код из объекта листа на другие листы, и он вызовет HideRows
, который затем будет скрывать / отображать строки в зависимости от значения ячейки G20
, вы можете изменить цель на каждом листе.
А что касается использования Select Case
, вы можете видеть, что вам нужен только один со всеми Ваши чемоданы по стоимости.