【发布时间】:2019-03-27 00:04:10
【问题描述】:
我正在尝试提出一种更有效、运行速度更快的方法来调整此公式,以便它根据“输入”选项卡上的 D10 值隐藏/显示多个工作表中的相同行,该宏所在的位置存储。
我已经尝试了所有能找到的方法,但看起来我必须在第一个工作表的正下方列出完全相同的行引用和新的工作表名称。
Private Sub Worksheet_Change(ByVal Target As Range)
Application.DisplayAlerts = False 'Prevents general pop-ups
Application.Calculation = xlManual 'Formulas are not calculated
Application.ScreenUpdating = False 'What the user see's on screen will not change
If Intersect(Target, Range("D10")) Is Nothing Then Exit Sub
'Hides all major city information so just the titles are shown.
If Target.Address = ("$D$10") And Target.Value = "" Then
Sheets("Weekly Report - New").Unprotect
Sheets("Weekly Report - New").Rows("54:63").EntireRow.Hidden = True
Sheets("Weekly Report - New").Rows("68:77").EntireRow.Hidden = True
Sheets("Weekly Report - New").Rows("82:91").EntireRow.Hidden = True
Sheets("Weekly Report - New").Rows("96:105").EntireRow.Hidden = True
Sheets("Weekly Report - New").Rows("18:31").EntireRow.Hidden = False
Sheets("Weekly Report - New").Rows("23:47").EntireRow.Hidden = True
'Unhides 'London' under the major cities section and keeps the rest hidden.
ElseIf Target.Address = ("$D$10") And Target = "UK" Then
Sheets("Weekly Report - New").Unprotect
Sheets("Weekly Report - New").Rows("54").EntireRow.Hidden = False
Sheets("Weekly Report - New").Rows("68").EntireRow.Hidden = False
Sheets("Weekly Report - New").Rows("82").EntireRow.Hidden = False
Sheets("Weekly Report - New").Rows("96").EntireRow.Hidden = False
Sheets("Weekly Report - New").Rows("55:63").EntireRow.Hidden = True
Sheets("Weekly Report - New").Rows("69:77").EntireRow.Hidden = True
Sheets("Weekly Report - New").Rows("83:91").EntireRow.Hidden = True
Sheets("Weekly Report - New").Rows("97:105").EntireRow.Hidden = True
Sheets("Weekly Report - New").Rows("24:28").EntireRow.Hidden = False
Sheets("Weekly Report - New").Rows("18:23").EntireRow.Hidden = True
Sheets("Weekly Report - New").Rows("29:47").EntireRow.Hidden = True
'Unhides 'French Riviera' & 'Paris' under the major cities section and keeps the rest hidden.
ElseIf Target.Address = ("$D$10") And Target = "France" Then
Sheets("Weekly Report - New").Unprotect
Sheets("Weekly Report - New").Rows("55:56").EntireRow.Hidden = False
Sheets("Weekly Report - New").Rows("69:70").EntireRow.Hidden = False
Sheets("Weekly Report - New").Rows("83:84").EntireRow.Hidden = False
Sheets("Weekly Report - New").Rows("97:98").EntireRow.Hidden = False
Sheets("Weekly Report - New").Rows("54").EntireRow.Hidden = True
Sheets("Weekly Report - New").Rows("68").EntireRow.Hidden = True
Sheets("Weekly Report - New").Rows("82").EntireRow.Hidden = True
Sheets("Weekly Report - New").Rows("96").EntireRow.Hidden = True
Sheets("Weekly Report - New").Rows("57:63").EntireRow.Hidden = True
Sheets("Weekly Report - New").Rows("71:77").EntireRow.Hidden = True
Sheets("Weekly Report - New").Rows("85:91").EntireRow.Hidden = True
Sheets("Weekly Report - New").Rows("99:105").EntireRow.Hidden = True
Sheets("Weekly Report - New").Rows("30:34").EntireRow.Hidden = False
Sheets("Weekly Report - New").Rows("18:29").EntireRow.Hidden = True
Sheets("Weekly Report - New").Rows("35:47").EntireRow.Hidden = True
'Unhides 'Barcelona' & 'Madrid' under the major cities section and keeps the rest hidden.
ElseIf Target.Address = ("$D$10") And Target = "Spain" Then
Sheets("Weekly Report - New").Unprotect
Sheets("Weekly Report - New").Rows("57:58").EntireRow.Hidden = False
Sheets("Weekly Report - New").Rows("71:72").EntireRow.Hidden = False
Sheets("Weekly Report - New").Rows("85:86").EntireRow.Hidden = False
Sheets("Weekly Report - New").Rows("99:100").EntireRow.Hidden = False
Sheets("Weekly Report - New").Rows("54:56").EntireRow.Hidden = True
Sheets("Weekly Report - New").Rows("59:63").EntireRow.Hidden = True
Sheets("Weekly Report - New").Rows("68:70").EntireRow.Hidden = True
Sheets("Weekly Report - New").Rows("73:77").EntireRow.Hidden = True
Sheets("Weekly Report - New").Rows("82:84").EntireRow.Hidden = True
Sheets("Weekly Report - New").Rows("87:91").EntireRow.Hidden = True
Sheets("Weekly Report - New").Rows("96:98").EntireRow.Hidden = True
Sheets("Weekly Report - New").Rows("101:105").EntireRow.Hidden = True
Sheets("Weekly Report - New").Rows("36:40").EntireRow.Hidden = False
Sheets("Weekly Report - New").Rows("18:35").EntireRow.Hidden = True
Sheets("Weekly Report - New").Rows("41:47").EntireRow.Hidden = True
'Unhides 'Florence', 'Maples', 'Milan', 'Rome' & 'Venice' under the major cities section and keeps the rest hidden.
ElseIf Target.Address = ("$D$10") And Target = "Italy" Then
Sheets("Weekly Report - New").Unprotect
Sheets("Weekly Report - New").Rows("59:63").EntireRow.Hidden = False
Sheets("Weekly Report - New").Rows("73:77").EntireRow.Hidden = False
Sheets("Weekly Report - New").Rows("87:91").EntireRow.Hidden = False
Sheets("Weekly Report - New").Rows("101:105").EntireRow.Hidden = False
Sheets("Weekly Report - New").Rows("54:58").EntireRow.Hidden = True
Sheets("Weekly Report - New").Rows("68:72").EntireRow.Hidden = True
Sheets("Weekly Report - New").Rows("82:86").EntireRow.Hidden = True
Sheets("Weekly Report - New").Rows("96:100").EntireRow.Hidden = True
Sheets("Weekly Report - New").Rows("42:46").EntireRow.Hidden = False
Sheets("Weekly Report - New").Rows("18:41").EntireRow.Hidden = True
Sheets("Weekly Report - New").Rows("47").EntireRow.Hidden = True
End If
Sheets("Weekly Report - New").Rows("108:121").EntireRow.Hidden = True
Sheets("Weekly Report - New").Protect
Application.DisplayAlerts = True
Application.Calculation = xlAutomatic
Application.ScreenUpdating = True
End Sub
这对于“每周报告 - 新”工作表工作正常(如果有点慢)。我现在需要它为“累积报告 - 新”工作表做同样的事情。
【问题讨论】:
-
我会创建将被隐藏在一起的行的
Unions,然后只隐藏Union's - 这将有利于可读性。另外,不要检查地址,而是检查Intersect