Excel 如何根据最新的单元格值重新运行宏
我有这些宏集,这些宏会根据单元格值的变化强制行隐藏和取消隐藏,它可以按预期运行,但由于宏的顺序,行可能会不经意地被隐藏/取消隐藏。是否有方法根据目标单元格中的最新值重新运行所有宏?在这里,我不必返回到每个单元格来触发值以运行宏。我在网上搜索并尝试我认为可能的解决方案,但就是无法让它发挥作用。我真的非常感谢任何帮助或建议! 我的宏当前宏如下所示:Excel 如何根据最新的单元格值重新运行宏,excel,vba,userform,Excel,Vba,Userform,我有这些宏集,这些宏会根据单元格值的变化强制行隐藏和取消隐藏,它可以按预期运行,但由于宏的顺序,行可能会不经意地被隐藏/取消隐藏。是否有方法根据目标单元格中的最新值重新运行所有宏?在这里,我不必返回到每个单元格来触发值以运行宏。我在网上搜索并尝试我认为可能的解决方案,但就是无法让它发挥作用。我真的非常感谢任何帮助或建议! 我的宏当前宏如下所示: Private Sub Worksheet_Change(ByVal Target As Range) ActiveSheet.Activate
Private Sub Worksheet_Change(ByVal Target As Range)
ActiveSheet.Activate
If Not Application.Intersect(Range("C8"), Range(Target.Address)) Is Nothing Then
Select Case Target.Value
Case Is = "A": Rows("54").EntireRow.Hidden = True
Rows("61").EntireRow.Hidden = True
Rows("77").EntireRow.Hidden = True
Rows("93").EntireRow.Hidden = True
Rows("109").EntireRow.Hidden = True
Rows("129").EntireRow.Hidden = True
Case Is = "B": Rows("54").EntireRow.Hidden = False
Rows("61").EntireRow.Hidden = False
Rows("77").EntireRow.Hidden = False
Rows("93").EntireRow.Hidden = False
Rows("109").EntireRow.Hidden = False
Rows("129").EntireRow.Hidden = False
Case Is = "C": Rows("54").EntireRow.Hidden = True
Rows("61").EntireRow.Hidden = True
Rows("77").EntireRow.Hidden = True
Rows("93").EntireRow.Hidden = True
Rows("109").EntireRow.Hidden = True
Rows("129").EntireRow.Hidden = True
End Select
End If
If Not Application.Intersect(Range("C8"), Range(Target.Address)) Is Nothing Then
Select Case Target.Value
Case Is = "B": Sheets("Proforma Inv").Visible = True
Case Else
Sheets("Proforma Inv").Visible = False
End Select
End If
If Not Application.Intersect(Range("C9"), Range(Target.Address)) Is Nothing Then
Select Case Target.Value
Case Is = "Debug", "Soshi": Rows("55").EntireRow.Hidden = False
Sheets("Inv").Rows("41").EntireRow.Hidden = True
Sheets("Inv").Rows("48").EntireRow.Hidden = True
Sheets("Inv").Rows("55").EntireRow.Hidden = True
Sheets("Inv").Rows("62").EntireRow.Hidden = True
Sheets("Proforma Inv").Rows("39").EntireRow.Hidden = True
Sheets("Proforma Inv").Rows("46").EntireRow.Hidden = True
Sheets("Proforma Inv").Rows("53").EntireRow.Hidden = True
Sheets("Proforma Inv").Rows("60").EntireRow.Hidden = True
Case Else
Rows("55").EntireRow.Hidden = True
Sheets("Inv").Rows("41").EntireRow.Hidden = False
Sheets("Inv").Rows("48").EntireRow.Hidden = False
Sheets("Inv").Rows("55").EntireRow.Hidden = False
Sheets("Inv").Rows("62").EntireRow.Hidden = False
Sheets("Proforma Inv").Rows("39").EntireRow.Hidden = False
Sheets("Proforma Inv").Rows("46").EntireRow.Hidden = False
Sheets("Proforma Inv").Rows("53").EntireRow.Hidden = False
Sheets("Proforma Inv").Rows("60").EntireRow.Hidden = False
End Select
End If
If Not Application.Intersect(Range("C52"), Range(Target.Address)) Is Nothing Then
Select Case Target.Value
Case Is = "1": Rows("72:119").EntireRow.Hidden = True
Rows("57:60").EntireRow.Hidden = False
Rows("62:71").EntireRow.Hidden = False
Sheets("Inv").Rows("44:64").EntireRow.Hidden = True
Sheets("Inv").Rows("38:40").EntireRow.Hidden = False
Sheets("Inv").Rows("42:43").EntireRow.Hidden = False
Sheets("PL").Rows("22:23").EntireRow.Hidden = False
Sheets("PL").Rows("39:40").EntireRow.Hidden = True
Sheets("PL").Rows("56:57").EntireRow.Hidden = True
Sheets("PL").Rows("73:74").EntireRow.Hidden = True
Sheets("Proforma Inv").Rows("42:62").EntireRow.Hidden = True
Sheets("Proforma Inv").Rows("36:38").EntireRow.Hidden = False
Sheets("Proforma Inv").Rows("40:41").EntireRow.Hidden = False
Case Is = "2": Rows("88:119").EntireRow.Hidden = True
Rows("57:60").EntireRow.Hidden = False
Rows("62:76").EntireRow.Hidden = False
Rows("78:87").EntireRow.Hidden = False
Sheets("Inv").Rows("51:64").EntireRow.Hidden = True
Sheets("Inv").Rows("38:40").EntireRow.Hidden = False
Sheets("Inv").Rows("42:47").EntireRow.Hidden = False
Sheets("Inv").Rows("49:50").EntireRow.Hidden = False
Sheets("PL").Rows("22:23").EntireRow.Hidden = False
Sheets("PL").Rows("39:40").EntireRow.Hidden = False
Sheets("PL").Rows("56:57").EntireRow.Hidden = True
Sheets("PL").Rows("73:74").EntireRow.Hidden = True
Sheets("Proforma Inv").Rows("49:62").EntireRow.Hidden = True
Sheets("Proforma Inv").Rows("36:38").EntireRow.Hidden = False
Sheets("Proforma Inv").Rows("40:45").EntireRow.Hidden = False
Sheets("Proforma Inv").Rows("47:48").EntireRow.Hidden = False
Case Is = "3": Rows("104:119").EntireRow.Hidden = True
Rows("57:60").EntireRow.Hidden = False
Rows("62:76").EntireRow.Hidden = False
Rows("78:92").EntireRow.Hidden = False
Rows("94:103").EntireRow.Hidden = False
Sheets("Inv").Rows("58:64").EntireRow.Hidden = True
Sheets("Inv").Rows("38:40").EntireRow.Hidden = False
Sheets("Inv").Rows("42:47").EntireRow.Hidden = False
Sheets("Inv").Rows("49:54").EntireRow.Hidden = False
Sheets("Inv").Rows("56:57").EntireRow.Hidden = False
Sheets("PL").Rows("22:23").EntireRow.Hidden = False
Sheets("PL").Rows("39:40").EntireRow.Hidden = False
Sheets("PL").Rows("56:57").EntireRow.Hidden = False
Sheets("PL").Rows("73:74").EntireRow.Hidden = True
Sheets("Proforma Inv").Rows("56:62").EntireRow.Hidden = True
Sheets("Proforma Inv").Rows("36:38").EntireRow.Hidden = False
Sheets("Proforma Inv").Rows("40:45").EntireRow.Hidden = False
Sheets("Proforma Inv").Rows("47:52").EntireRow.Hidden = False
Sheets("Proforma Inv").Rows("54:55").EntireRow.Hidden = False
Case Is = "4": Rows("57:60").EntireRow.Hidden = False
Rows("62:76").EntireRow.Hidden = False
Rows("78:92").EntireRow.Hidden = False
Rows("94:108").EntireRow.Hidden = False
Rows("110:119").EntireRow.Hidden = False
Sheets("Inv").Rows("38:40").EntireRow.Hidden = False
Sheets("Inv").Rows("42:47").EntireRow.Hidden = False
Sheets("Inv").Rows("49:54").EntireRow.Hidden = False
Sheets("Inv").Rows("56:61").EntireRow.Hidden = False
Sheets("Inv").Rows("63:64").EntireRow.Hidden = False
Sheets("PL").Rows("22:23").EntireRow.Hidden = False
Sheets("PL").Rows("39:40").EntireRow.Hidden = False
Sheets("PL").Rows("56:57").EntireRow.Hidden = False
Sheets("PL").Rows("73:74").EntireRow.Hidden = False
Sheets("Proforma Inv").Rows("36:38").EntireRow.Hidden = False
Sheets("Proforma Inv").Rows("40:45").EntireRow.Hidden = False
Sheets("Proforma Inv").Rows("47:52").EntireRow.Hidden = False
Sheets("Proforma Inv").Rows("54:59").EntireRow.Hidden = False
Sheets("Proforma Inv").Rows("61:62").EntireRow.Hidden = False
End Select
End If
End Sub
通常最好将大部分代码移动到单独的子代码中,并从事件处理程序调用该子代码:然后也可以从其他地方调用它 常规模块:
Sheet1.SyncVis
图纸模块:
Private Sub Worksheet_Change(ByVal Target As Range)
CheckVis Target
End Sub
Sub SyncVis()
Me.CheckVis Range("C8")
Me.CheckVis Range("C52")
End Sub
Private Sub CheckVis(ByVal Target As Range)
Dim tf As Boolean
If Not Application.Intersect(Range("C8"), Target) Is Nothing Then
With Range("A54,A61,A77,A93,A109,A129").EntireRow
Select Case Target.Value
Case "A", "C": .Hidden = True
Case "B": .Hidden = False
End Select
End With
Sheets("Proforma Inv").Visible = Target.Value = "B"
End If
If Not Application.Intersect(Range("C9"), Target) Is Nothing Then
tf = Target.Value = "Debug" or Target.Value = "Soshi"
Rows("55").EntireRow.Hidden = tf
Sheets("Inv").Range("A41,A48,A55,A62").EntireRow.Hidden = tf
Sheets("Proforma Inv").Range("A39,A46,A53,A60").EntireRow.Hidden = tf
End If
If Not Application.Intersect(Range("C52"), Range(Target.Address)) Is Nothing Then
Select Case Target.Value
Case Is = "1": Range("A72:A119,A57:A60,A62:A71").EntireRow.Hidden = True
Sheets("Inv").Rows("44:64").EntireRow.Hidden = True
Sheets("Inv").Rows("38:40").EntireRow.Hidden = False
Sheets("Inv").Rows("42:43").EntireRow.Hidden = False
Sheets("PL").Rows("22:23").EntireRow.Hidden = False
Sheets("PL").Rows("39:40").EntireRow.Hidden = True
Sheets("PL").Rows("56:57").EntireRow.Hidden = True
Sheets("PL").Rows("73:74").EntireRow.Hidden = True
Sheets("Proforma Inv").Rows("42:62").EntireRow.Hidden = True
Sheets("Proforma Inv").Rows("36:38").EntireRow.Hidden = False
Sheets("Proforma Inv").Rows("40:41").EntireRow.Hidden = False
Case Is = "2": Rows("88:119").EntireRow.Hidden = True
Rows("57:60").EntireRow.Hidden = False
Rows("62:76").EntireRow.Hidden = False
Rows("78:87").EntireRow.Hidden = False
Sheets("Inv").Rows("51:64").EntireRow.Hidden = True
Sheets("Inv").Rows("38:40").EntireRow.Hidden = False
Sheets("Inv").Rows("42:47").EntireRow.Hidden = False
Sheets("Inv").Rows("49:50").EntireRow.Hidden = False
Sheets("PL").Rows("22:23").EntireRow.Hidden = False
Sheets("PL").Rows("39:40").EntireRow.Hidden = False
Sheets("PL").Rows("56:57").EntireRow.Hidden = True
Sheets("PL").Rows("73:74").EntireRow.Hidden = True
Sheets("Proforma Inv").Rows("49:62").EntireRow.Hidden = True
Sheets("Proforma Inv").Rows("36:38").EntireRow.Hidden = False
Sheets("Proforma Inv").Rows("40:45").EntireRow.Hidden = False
Sheets("Proforma Inv").Rows("47:48").EntireRow.Hidden = False
Case Is = "3": Rows("104:119").EntireRow.Hidden = True
Rows("57:60").EntireRow.Hidden = False
Rows("62:76").EntireRow.Hidden = False
Rows("78:92").EntireRow.Hidden = False
Rows("94:103").EntireRow.Hidden = False
Sheets("Inv").Rows("58:64").EntireRow.Hidden = True
Sheets("Inv").Rows("38:40").EntireRow.Hidden = False
Sheets("Inv").Rows("42:47").EntireRow.Hidden = False
Sheets("Inv").Rows("49:54").EntireRow.Hidden = False
Sheets("Inv").Rows("56:57").EntireRow.Hidden = False
Sheets("PL").Rows("22:23").EntireRow.Hidden = False
Sheets("PL").Rows("39:40").EntireRow.Hidden = False
Sheets("PL").Rows("56:57").EntireRow.Hidden = False
Sheets("PL").Rows("73:74").EntireRow.Hidden = True
Sheets("Proforma Inv").Rows("56:62").EntireRow.Hidden = True
Sheets("Proforma Inv").Rows("36:38").EntireRow.Hidden = False
Sheets("Proforma Inv").Rows("40:45").EntireRow.Hidden = False
Sheets("Proforma Inv").Rows("47:52").EntireRow.Hidden = False
Sheets("Proforma Inv").Rows("54:55").EntireRow.Hidden = False
Case Is = "4": Rows("57:60").EntireRow.Hidden = False
Rows("62:76").EntireRow.Hidden = False
Rows("78:92").EntireRow.Hidden = False
Rows("94:108").EntireRow.Hidden = False
Rows("110:119").EntireRow.Hidden = False
Sheets("Inv").Rows("38:40").EntireRow.Hidden = False
Sheets("Inv").Rows("42:47").EntireRow.Hidden = False
Sheets("Inv").Rows("49:54").EntireRow.Hidden = False
Sheets("Inv").Rows("56:61").EntireRow.Hidden = False
Sheets("Inv").Rows("63:64").EntireRow.Hidden = False
Sheets("PL").Rows("22:23").EntireRow.Hidden = False
Sheets("PL").Rows("39:40").EntireRow.Hidden = False
Sheets("PL").Rows("56:57").EntireRow.Hidden = False
Sheets("PL").Rows("73:74").EntireRow.Hidden = False
Sheets("Proforma Inv").Rows("36:38").EntireRow.Hidden = False
Sheets("Proforma Inv").Rows("40:45").EntireRow.Hidden = False
Sheets("Proforma Inv").Rows("47:52").EntireRow.Hidden = False
Sheets("Proforma Inv").Rows("54:59").EntireRow.Hidden = False
Sheets("Proforma Inv").Rows("61:62").EntireRow.Hidden = False
End Select
End If
End Sub
旁注:范围(Target.Address)
是多余的:只是目标
。