在Excel中自动运行的宏

在Excel中自动运行的宏,excel,vba,Excel,Vba,在工作簿的第一个电子表格SOW中有两个表。两个表中的每个单元格都链接到以下两个电子表格(服务和第三方电子表格)中的表。在第二个电子表格(服务选项卡)中输入表格的数据填充SOW选项卡中的第一个表格。在第三个电子表格(第三方选项卡)的表格中输入的数据填充在SOW选项卡的第二个表格中。我需要使SOW表中的行只有在以下两个选项卡中的两个对应表之一输入了数据时才可见。如果第二个和第三个选项卡的表中没有任何数据,则需要隐藏SOW表中相应的行 我在下面编写的宏(此代码仅适用于两个表中的一个,第二个表的宏长度相

在工作簿的第一个电子表格SOW中有两个表。两个表中的每个单元格都链接到以下两个电子表格(服务和第三方电子表格)中的表。在第二个电子表格(服务选项卡)中输入表格的数据填充SOW选项卡中的第一个表格。在第三个电子表格(第三方选项卡)的表格中输入的数据填充在SOW选项卡的第二个表格中。我需要使SOW表中的行只有在以下两个选项卡中的两个对应表之一输入了数据时才可见。如果第二个和第三个选项卡的表中没有任何数据,则需要隐藏SOW表中相应的行

我在下面编写的宏(此代码仅适用于两个表中的一个,第二个表的宏长度相等)分配给按钮时可以工作,但即使在尝试使用工作表\u change sub后,似乎也不会自动工作。是否有一种方法可以编写一个宏,该宏将始终自动运行,而用户无需按下宏按钮或单击运行?如果可能,在不大幅降低工作簿总体速度的情况下,最好的方法是什么。虽然我尝试将下面的代码输入到工作表更改子项中,但这是我在工作表更改尝试失败后用于按钮的宏中的代码

Sub SOWServicesEmptyCells()
Call TurnOffFunctions
'1st Section
If Sheets("SOW").Range("B28") = 0 Then
      Worksheets("SOW").Rows("28:48").Hidden = True
    End If
'1A
If Sheets("SOW").Range("C29") = 0 Then
      Worksheets("SOW").Rows("29").Hidden = True
End If
'1B
If Sheets("SOW").Range("C30") = 0 Then
      Worksheets("SOW").Rows("30").Hidden = True
End If
'1C
If Sheets("SOW").Range("C31") = 0 Then
      Worksheets("SOW").Rows("31").Hidden = True
End If
'1D
If Sheets("SOW").Range("C32") = 0 Then
      Worksheets("SOW").Rows("32").Hidden = True
End If
'1E
If Sheets("SOW").Range("C33") = 0 Then
      Worksheets("SOW").Rows("33").Hidden = True
End If
'1F
If Sheets("SOW").Range("C34") = 0 Then
      Worksheets("SOW").Rows("34").Hidden = True
End If
'1G
If Sheets("SOW").Range("C34") = 0 Then
      Worksheets("SOW").Rows("34").Hidden = True
End If
'1H
If Sheets("SOW").Range("C35") = 0 Then
      Worksheets("SOW").Rows("35").Hidden = True
End If
'1I
If Sheets("SOW").Range("C36") = 0 Then
      Worksheets("SOW").Rows("36").Hidden = True
End If
'1J
If Sheets("SOW").Range("C37") = 0 Then
      Worksheets("SOW").Rows("37").Hidden = True
End If
'1K
If Sheets("SOW").Range("C38") = 0 Then
      Worksheets("SOW").Rows("38").Hidden = True
End If
'1L
If Sheets("SOW").Range("C39") = 0 Then
      Worksheets("SOW").Rows("39").Hidden = True
End If
'1M
If Sheets("SOW").Range("C40") = 0 Then
      Worksheets("SOW").Rows("40").Hidden = True
End If
'1N
If Sheets("SOW").Range("C41") = 0 Then
      Worksheets("SOW").Rows("41").Hidden = True
End If
'1O
If Sheets("SOW").Range("C42") = 0 Then
      Worksheets("SOW").Rows("42").Hidden = True
End If
'1P
If Sheets("SOW").Range("C43") = 0 Then
      Worksheets("SOW").Rows("43").Hidden = True
End If
'1Q
If Sheets("SOW").Range("C44") = 0 Then
      Worksheets("SOW").Rows("44").Hidden = True
End If
'1R
If Sheets("SOW").Range("C45") = 0 Then
      Worksheets("SOW").Rows("45").Hidden = True
End If
'1S
If Sheets("SOW").Range("C46") = 0 Then
      Worksheets("SOW").Rows("46").Hidden = True
End If
'1T
If Sheets("SOW").Range("C47") = 0 Then
      Worksheets("SOW").Rows("47").Hidden = True
End If
'1U
If Sheets("SOW").Range("C48") = 0 Then
      Worksheets("SOW").Rows("48").Hidden = True
End If
'Second Section
If Sheets("SOW").Range("B49") = 0 Then
    Worksheets("SOW").Rows("49:69").Hidden = True
 End If
'2A
If Sheets("SOW").Range("C50") = 0 Then
    Worksheets("SOW").Rows("50").Hidden = True
 End If
'2B
If Sheets("SOW").Range("C51") = 0 Then
    Worksheets("SOW").Rows("51").Hidden = True
 End If
'2C
If Sheets("SOW").Range("C52") = 0 Then
    Worksheets("SOW").Rows("52").Hidden = True
 End If
'2D
If Sheets("SOW").Range("C53") = 0 Then
    Worksheets("SOW").Rows("53").Hidden = True
 End If
'2E
If Sheets("SOW").Range("C54") = 0 Then
    Worksheets("SOW").Rows("54").Hidden = True
 End If
'2F
If Sheets("SOW").Range("C55") = 0 Then
    Worksheets("SOW").Rows("55").Hidden = True
 End If
'2G
If Sheets("SOW").Range("C56") = 0 Then
    Worksheets("SOW").Rows("56").Hidden = True
 End If
'2H
If Sheets("SOW").Range("C57") = 0 Then
    Worksheets("SOW").Rows("57").Hidden = True
 End If
'2I
If Sheets("SOW").Range("C58") = 0 Then
    Worksheets("SOW").Rows("58").Hidden = True
 End If
'2J
If Sheets("SOW").Range("C59") = 0 Then
    Worksheets("SOW").Rows("59").Hidden = True
 End If
'2K
If Sheets("SOW").Range("C60") = 0 Then
    Worksheets("SOW").Rows("60").Hidden = True
 End If
'2L
If Sheets("SOW").Range("C61") = 0 Then
    Worksheets("SOW").Rows("61").Hidden = True
 End If
'2M
If Sheets("SOW").Range("C62") = 0 Then
    Worksheets("SOW").Rows("62").Hidden = True
 End If
'2N
If Sheets("SOW").Range("C63") = 0 Then
    Worksheets("SOW").Rows("63").Hidden = True
 End If
'2O
If Sheets("SOW").Range("C64") = 0 Then
    Worksheets("SOW").Rows("64").Hidden = True
 End If
'2P
If Sheets("SOW").Range("C65") = 0 Then
    Worksheets("SOW").Rows("65").Hidden = True
 End If
'2Q
If Sheets("SOW").Range("C66") = 0 Then
    Worksheets("SOW").Rows("66").Hidden = True
 End If
'2R
If Sheets("SOW").Range("C67") = 0 Then
    Worksheets("SOW").Rows("67").Hidden = True
 End If
'2S
If Sheets("SOW").Range("C68") = 0 Then
    Worksheets("SOW").Rows("68").Hidden = True
 End If
'2T
If Sheets("SOW").Range("C69") = 0 Then
    Worksheets("SOW").Rows("69").Hidden = True
 End If
'3rd Section
If Sheets("SOW").Range("B70") = 0 Then
    Worksheets("SOW").Rows("70:90").Hidden = True
End If
'3A
If Sheets("SOW").Range("C71") = 0 Then
    Worksheets("SOW").Rows("71").Hidden = True
End If
'3B
If Sheets("SOW").Range("C72") = 0 Then
    Worksheets("SOW").Rows("72").Hidden = True
End If
'3C
If Sheets("SOW").Range("C73") = 0 Then
    Worksheets("SOW").Rows("73").Hidden = True
End If
'3D
If Sheets("SOW").Range("C74") = 0 Then
    Worksheets("SOW").Rows("74").Hidden = True
End If
'3E
If Sheets("SOW").Range("C75") = 0 Then
    Worksheets("SOW").Rows("75").Hidden = True
End If
'3F
If Sheets("SOW").Range("C76") = 0 Then
    Worksheets("SOW").Rows("76").Hidden = True
End If
'3G
If Sheets("SOW").Range("C77") = 0 Then
    Worksheets("SOW").Rows("77").Hidden = True
End If
'3H
If Sheets("SOW").Range("C78") = 0 Then
    Worksheets("SOW").Rows("78").Hidden = True
End If
'3I
If Sheets("SOW").Range("C79") = 0 Then
    Worksheets("SOW").Rows("79").Hidden = True
End If
'3J
If Sheets("SOW").Range("C80") = 0 Then
    Worksheets("SOW").Rows("80").Hidden = True
'3K
If Sheets("SOW").Range("C81") = 0 Then
    Worksheets("SOW").Rows("81").Hidden = True
End If
'3L
If Sheets("SOW").Range("C82") = 0 Then
    Worksheets("SOW").Rows("82").Hidden = True
End If
'3M
If Sheets("SOW").Range("C83") = 0 Then
    Worksheets("SOW").Rows("83").Hidden = True
End If
'3N
If Sheets("SOW").Range("C84") = 0 Then
    Worksheets("SOW").Rows("85").Hidden = True
End If
'3O
If Sheets("SOW").Range("C86") = 0 Then
    Worksheets("SOW").Rows("86").Hidden = True
End If
'3P
If Sheets("SOW").Range("C87") = 0 Then
    Worksheets("SOW").Rows("87").Hidden = True
End If
'3Q
If Sheets("SOW").Range("C88") = 0 Then
    Worksheets("SOW").Rows("88").Hidden = True
End If
'3R
If Sheets("SOW").Range("C89") = 0 Then
    Worksheets("SOW").Rows("89").Hidden = True
End If
'3S
If Sheets("SOW").Range("C90") = 0 Then
    Worksheets("SOW").Rows("90").Hidden = True
End If
'4th Section
If Sheets("SOW").Range("B91") = 0 Then
    Worksheets("SOW").Rows("91:111").Hidden = True
End If
'4A
If Sheets("SOW").Range("B92") = 0 Then
    Worksheets("SOW").Rows("92").Hidden = True
End If
'4B
If Sheets("SOW").Range("B93") = 0 Then
    Worksheets("SOW").Rows("93").Hidden = True
End If
'4C
If Sheets("SOW").Range("B94") = 0 Then
    Worksheets("SOW").Rows("94").Hidden = True
End If
'4D
If Sheets("SOW").Range("B95") = 0 Then
    Worksheets("SOW").Rows("95").Hidden = True
End If
'4E
If Sheets("SOW").Range("B96") = 0 Then
    Worksheets("SOW").Rows("96").Hidden = True
End If
'4F
If Sheets("SOW").Range("B97") = 0 Then
    Worksheets("SOW").Rows("97").Hidden = True
End If
'4G
If Sheets("SOW").Range("B98") = 0 Then
    Worksheets("SOW").Rows("98").Hidden = True
End If
'4H
If Sheets("SOW").Range("B99") = 0 Then
    Worksheets("SOW").Rows("99").Hidden = True
End If
'4I
If Sheets("SOW").Range("B100") = 0 Then
    Worksheets("SOW").Rows("100").Hidden = True
End If
'4J
If Sheets("SOW").Range("B101") = 0 Then
    Worksheets("SOW").Rows("101").Hidden = True
End If
'4K
If Sheets("SOW").Range("B102") = 0 Then
    Worksheets("SOW").Rows("102").Hidden = True
End If
'4L
If Sheets("SOW").Range("B103") = 0 Then
    Worksheets("SOW").Rows("103").Hidden = True
End If
'4M
If Sheets("SOW").Range("B104") = 0 Then
    Worksheets("SOW").Rows("104").Hidden = True
End If
'4N
If Sheets("SOW").Range("B105") = 0 Then
    Worksheets("SOW").Rows("105").Hidden = True
End If
'4O
If Sheets("SOW").Range("B106") = 0 Then
    Worksheets("SOW").Rows("106").Hidden = True
End If
'4P
If Sheets("SOW").Range("B107") = 0 Then
    Worksheets("SOW").Rows("107").Hidden = True
End If
If Sheets("SOW").Range("C108") = 0 Then
    Worksheets("SOW").Rows("108").Hidden = True
 End If
If Sheets("SOW").Range("C109") = 0 Then
    Worksheets("SOW").Rows("109").Hidden = True
 End If
If Sheets("SOW").Range("C110") = 0 Then
    Worksheets("SOW").Rows("110").Hidden = True
 End If
If Sheets("SOW").Range("C111") = 0 Then
    Worksheets("SOW").Rows("111").Hidden = True
 End If
'5th Section
If Sheets("SOW").Range("B112") = 0 Then
    Worksheets("SOW").Rows("112:132").Hidden = True
End If
'5A
If Sheets("SOW").Range("B113") = 0 Then
    Worksheets("SOW").Rows("113").Hidden = True
End If
'5B
If Sheets("SOW").Range("B114") = 0 Then
    Worksheets("SOW").Rows("114").Hidden = True
End If
'5C
If Sheets("SOW").Range("B115") = 0 Then
    Worksheets("SOW").Rows("115").Hidden = True
End If
'5D
If Sheets("SOW").Range("B116") = 0 Then
    Worksheets("SOW").Rows("116").Hidden = True
End If
'5E
If Sheets("SOW").Range("B117") = 0 Then
    Worksheets("SOW").Rows("117").Hidden = True
End If
'5F
If Sheets("SOW").Range("B118") = 0 Then
    Worksheets("SOW").Rows("118").Hidden = True
End If
'5G
If Sheets("SOW").Range("B119") = 0 Then
    Worksheets("SOW").Rows("119").Hidden = True
End If
'5H
If Sheets("SOW").Range("B120") = 0 Then
    Worksheets("SOW").Rows("120").Hidden = True
End If
'5J
If Sheets("SOW").Range("B120") = 0 Then
    Worksheets("SOW").Rows("120").Hidden = True
End If
'5K
If Sheets("SOW").Range("B120") = 0 Then
    Worksheets("SOW").Rows("120").Hidden = True
End If
'5L
If Sheets("SOW").Range("B121") = 0 Then
    Worksheets("SOW").Rows("121").Hidden = True
End If
'5M
If Sheets("SOW").Range("B122") = 0 Then
    Worksheets("SOW").Rows("122").Hidden = True
End If
'5N
If Sheets("SOW").Range("B123") = 0 Then
    Worksheets("SOW").Rows("123").Hidden = True
End If
'5O
If Sheets("SOW").Range("B124") = 0 Then
    Worksheets("SOW").Rows("124").Hidden = True
End If
'5P
If Sheets("SOW").Range("B125") = 0 Then
    Worksheets("SOW").Rows("125").Hidden = True
End If
'5Q
If Sheets("SOW").Range("B126") = 0 Then
    Worksheets("SOW").Rows("126").Hidden = True
End If
'5R
If Sheets("SOW").Range("B127") = 0 Then
    Worksheets("SOW").Rows("127").Hidden = True
End If
'5S
If Sheets("SOW").Range("B128") = 0 Then
    Worksheets("SOW").Rows("128").Hidden = True
End If
'5T
If Sheets("SOW").Range("B129") = 0 Then
    Worksheets("SOW").Rows("129").Hidden = True
End If
'5U
If Sheets("SOW").Range("B130") = 0 Then
    Worksheets("SOW").Rows("130").Hidden = True
End If
'5V
If Sheets("SOW").Range("B131") = 0 Then
    Worksheets("SOW").Rows("131").Hidden = True
End If
'SX
If Sheets("SOW").Range("B132") = 0 Then
    Worksheets("SOW").Rows("132").Hidden = True
End If
'6th Section
If Sheets("SOW").Range("B133") = 0 Then
    Worksheets("SOW").Rows("133:153").Hidden = True
End If
'6A
If Sheets("SOW").Range("B134") = 0 Then
    Worksheets("SOW").Rows("134").Hidden = True
End If
'6B
If Sheets("SOW").Range("B135") = 0 Then
    Worksheets("SOW").Rows("135").Hidden = True
End If
'6C
If Sheets("SOW").Range("B136") = 0 Then
    Worksheets("SOW").Rows("136").Hidden = True
End If
'6D
If Sheets("SOW").Range("B137") = 0 Then
    Worksheets("SOW").Rows("137").Hidden = True
End If
'6E
If Sheets("SOW").Range("B138") = 0 Then
    Worksheets("SOW").Rows("138").Hidden = True
End If
'6F
If Sheets("SOW").Range("B139") = 0 Then
    Worksheets("SOW").Rows("139").Hidden = True
End If
'6G
If Sheets("SOW").Range("B140") = 0 Then
    Worksheets("SOW").Rows("140").Hidden = True
End If
'6H
If Sheets("SOW").Range("B141") = 0 Then
    Worksheets("SOW").Rows("141").Hidden = True
End If
'6I
 If Sheets("SOW").Range("B142") = 0 Then
    Worksheets("SOW").Rows("142").Hidden = True
End If
'6J
 If Sheets("SOW").Range("B143") = 0 Then
    Worksheets("SOW").Rows("143").Hidden = True
End If
'6K
 If Sheets("SOW").Range("B144") = 0 Then
    Worksheets("SOW").Rows("144").Hidden = True
End If
'6L
 If Sheets("SOW").Range("B145") = 0 Then
    Worksheets("SOW").Rows("145").Hidden = True
End If
'6M
 If Sheets("SOW").Range("B146") = 0 Then
    Worksheets("SOW").Rows("146").Hidden = True
End If
'6N
 If Sheets("SOW").Range("B147") = 0 Then
    Worksheets("SOW").Rows("147").Hidden = True
End If
'6O
 If Sheets("SOW").Range("B148") = 0 Then
    Worksheets("SOW").Rows("148").Hidden = True
End If
'6P
 If Sheets("SOW").Range("B149") = 0 Then
    Worksheets("SOW").Rows("149").Hidden = True
End If
'6Q
 If Sheets("SOW").Range("B150") = 0 Then
    Worksheets("SOW").Rows("150").Hidden = True
End If
'6R
 If Sheets("SOW").Range("B151") = 0 Then
    Worksheets("SOW").Rows("151").Hidden = True
End If
'6S
 If Sheets("SOW").Range("B152") = 0 Then
    Worksheets("SOW").Rows("152").Hidden = True
End If
'6T
 If Sheets("SOW").Range("B153") = 0 Then
    Worksheets("SOW").Rows("153").Hidden = True
End If
'7th Section
 If Sheets("SOW").Range("B154") = 0 Then
    Worksheets("SOW").Rows("154:174").Hidden = True
End If
'7A
 If Sheets("SOW").Range("B155") = 0 Then
    Worksheets("SOW").Rows("155").Hidden = True
End If
'7B
 If Sheets("SOW").Range("B156") = 0 Then
    Worksheets("SOW").Rows("156").Hidden = True
End If
'7C
 If Sheets("SOW").Range("B157") = 0 Then
    Worksheets("SOW").Rows("157").Hidden = True
End If
'7D
 If Sheets("SOW").Range("B158") = 0 Then
    Worksheets("SOW").Rows("158").Hidden = True
End If
'7E
 If Sheets("SOW").Range("B159") = 0 Then
    Worksheets("SOW").Rows("159").Hidden = True
End If
'7F
 If Sheets("SOW").Range("B160") = 0 Then
    Worksheets("SOW").Rows("160").Hidden = True
End If
'7G
 If Sheets("SOW").Range("B161") = 0 Then
    Worksheets("SOW").Rows("161").Hidden = True
End If
'7H
 If Sheets("SOW").Range("B162") = 0 Then
    Worksheets("SOW").Rows("162").Hidden = True
End If
'7I
 If Sheets("SOW").Range("B163") = 0 Then
    Worksheets("SOW").Rows("163").Hidden = True
End If
'7J
 If Sheets("SOW").Range("B164") = 0 Then
    Worksheets("SOW").Rows("164").Hidden = True
End If
'7K
 If Sheets("SOW").Range("B165") = 0 Then
    Worksheets("SOW").Rows("165").Hidden = True
End If
'7L
 If Sheets("SOW").Range("B166") = 0 Then
    Worksheets("SOW").Rows("166").Hidden = True
End If
'7M
 If Sheets("SOW").Range("B167") = 0 Then
    Worksheets("SOW").Rows("167").Hidden = True
End If
'7N
 If Sheets("SOW").Range("B168") = 0 Then
    Worksheets("SOW").Rows("168").Hidden = True
End If
'7O
 If Sheets("SOW").Range("B169") = 0 Then
    Worksheets("SOW").Rows("169").Hidden = True
End If
'7P
 If Sheets("SOW").Range("B170") = 0 Then
    Worksheets("SOW").Rows("170").Hidden = True
End If
'7Q
 If Sheets("SOW").Range("B171") = 0 Then
    Worksheets("SOW").Rows("171").Hidden = True
End If
'7R
 If Sheets("SOW").Range("B172") = 0 Then
    Worksheets("SOW").Rows("172").Hidden = True
End If
'7S
 If Sheets("SOW").Range("B173") = 0 Then
    Worksheets("SOW").Rows("173").Hidden = True
End If
'7T
 If Sheets("SOW").Range("B174") = 0 Then
    Worksheets("SOW").Rows("174").Hidden = True
End If
'8th Section
If Sheets("SOW").Range("B175") = 0 Then
     Worksheets("SOW").Rows("175:195").Hidden = True
End If
'8A
If Sheets("SOW").Range("B176") = 0 Then
     Worksheets("SOW").Rows("176").Hidden = True
End If
'8B
If Sheets("SOW").Range("B177") = 0 Then
     Worksheets("SOW").Rows("177").Hidden = True
End If
'8C
If Sheets("SOW").Range("B178") = 0 Then
     Worksheets("SOW").Rows("178").Hidden = True
End If
'8D
If Sheets("SOW").Range("B179") = 0 Then
     Worksheets("SOW").Rows("179").Hidden = True
End If
'8E
If Sheets("SOW").Range("B180") = 0 Then
     Worksheets("SOW").Rows("180").Hidden = True
End If
'8F
If Sheets("SOW").Range("B181") = 0 Then
     Worksheets("SOW").Rows("181").Hidden = True
End If
'8G
If Sheets("SOW").Range("B182") = 0 Then
     Worksheets("SOW").Rows("182").Hidden = True
End If
'8H
If Sheets("SOW").Range("B183") = 0 Then
     Worksheets("SOW").Rows("183").Hidden = True
End If
'8I
If Sheets("SOW").Range("B184") = 0 Then
     Worksheets("SOW").Rows("184").Hidden = True
End If
'8J
If Sheets("SOW").Range("B185") = 0 Then
     Worksheets("SOW").Rows("185").Hidden = True
End If
'8K
If Sheets("SOW").Range("B186") = 0 Then
     Worksheets("SOW").Rows("186").Hidden = True
End If
'8L
If Sheets("SOW").Range("B187") = 0 Then
     Worksheets("SOW").Rows("187").Hidden = True
End If
'8M
If Sheets("SOW").Range("B188") = 0 Then
     Worksheets("SOW").Rows("188").Hidden = True
End If
'8N
If Sheets("SOW").Range("B189") = 0 Then
     Worksheets("SOW").Rows("189").Hidden = True
End If
'8O
If Sheets("SOW").Range("B190") = 0 Then
     Worksheets("SOW").Rows("190").Hidden = True
End If
'8P
If Sheets("SOW").Range("B191") = 0 Then
     Worksheets("SOW").Rows("191").Hidden = True
End If
'8Q
If Sheets("SOW").Range("B192") = 0 Then
     Worksheets("SOW").Rows("192").Hidden = True
End If
'8R
If Sheets("SOW").Range("B193") = 0 Then
     Worksheets("SOW").Rows("193").Hidden = True
End If
'8S
If Sheets("SOW").Range("B194") = 0 Then
     Worksheets("SOW").Rows("194").Hidden = True
End If
'8T
If Sheets("SOW").Range("B195") = 0 Then
     Worksheets("SOW").Rows("195").Hidden = True
End If
'9th Section
If Sheets("SOW").Range("B196") = 0 Then
     Worksheets("SOW").Rows("196:216").Hidden = True
End If
'9A
If Sheets("SOW").Range("B197") = 0 Then
     Worksheets("SOW").Rows("197").Hidden = True
End If
'9B
If Sheets("SOW").Range("B198") = 0 Then
     Worksheets("SOW").Rows("198").Hidden = True
End If
'9C
If Sheets("SOW").Range("B199") = 0 Then
     Worksheets("SOW").Rows("199").Hidden = True
End If
'9D
If Sheets("SOW").Range("B200") = 0 Then
     Worksheets("SOW").Rows("200").Hidden = True
End If
'9E
If Sheets("SOW").Range("B201") = 0 Then
     Worksheets("SOW").Rows("201").Hidden = True
End If
'9F
If Sheets("SOW").Range("B202") = 0 Then
     Worksheets("SOW").Rows("202").Hidden = True
End If
'9G
If Sheets("SOW").Range("B203") = 0 Then
     Worksheets("SOW").Rows("203").Hidden = True
End If
'9H
If Sheets("SOW").Range("B204") = 0 Then
     Worksheets("SOW").Rows("204").Hidden = True
End If
'9I
If Sheets("SOW").Range("B205") = 0 Then
     Worksheets("SOW").Rows("205").Hidden = True
End If
'9J
If Sheets("SOW").Range("B206") = 0 Then
     Worksheets("SOW").Rows("206").Hidden = True
End If
'9K
If Sheets("SOW").Range("B207") = 0 Then
     Worksheets("SOW").Rows("207").Hidden = True
End If
'9L
If Sheets("SOW").Range("B208") = 0 Then
     Worksheets("SOW").Rows("208").Hidden = True
End If
'9M
If Sheets("SOW").Range("B209") = 0 Then
     Worksheets("SOW").Rows("209").Hidden = True
End If
'9N
If Sheets("SOW").Range("B210") = 0 Then
     Worksheets("SOW").Rows("210").Hidden = True
End If
'9O
If Sheets("SOW").Range("B211") = 0 Then
     Worksheets("SOW").Rows("211").Hidden = True
End If
'9P
If Sheets("SOW").Range("B212") = 0 Then
     Worksheets("SOW").Rows("212").Hidden = True
End If
'9Q
If Sheets("SOW").Range("B213") = 0 Then
     Worksheets("SOW").Rows("213").Hidden = True
End If
'9R
If Sheets("SOW").Range("B214") = 0 Then
     Worksheets("SOW").Rows("214").Hidden = True
End If
'9S
If Sheets("SOW").Range("B215") = 0 Then
     Worksheets("SOW").Rows("215").Hidden = True
End If
'9T
If Sheets("SOW").Range("B216") = 0 Then
     Worksheets("SOW").Rows("216").Hidden = True
End If
'10th Section
If Sheets("SOW").Range("B217") = 0 Then
    Worksheets("SOW").Rows("217:237").Hidden = True
End If
'10A
If Sheets("SOW").Range("B218") = 0 Then
     Worksheets("SOW").Rows("218").Hidden = True
End If
'10B
If Sheets("SOW").Range("B219") = 0 Then
     Worksheets("SOW").Rows("219").Hidden = True
End If
'10C
If Sheets("SOW").Range("B220") = 0 Then
     Worksheets("SOW").Rows("220").Hidden = True
End If
'10D
If Sheets("SOW").Range("B221") = 0 Then
     Worksheets("SOW").Rows("221").Hidden = True
End If
'10E
If Sheets("SOW").Range("B222") = 0 Then
     Worksheets("SOW").Rows("222").Hidden = True
End If
'10F
If Sheets("SOW").Range("B223") = 0 Then
     Worksheets("SOW").Rows("223").Hidden = True
End If
'10G
If Sheets("SOW").Range("B224") = 0 Then
     Worksheets("SOW").Rows("224").Hidden = True
End If
'10H
If Sheets("SOW").Range("B225") = 0 Then
     Worksheets("SOW").Rows("225").Hidden = True
End If
'10I
If Sheets("SOW").Range("B226") = 0 Then
     Worksheets("SOW").Rows("226").Hidden = True
End If
'10J
If Sheets("SOW").Range("B227") = 0 Then
     Worksheets("SOW").Rows("227").Hidden = True
End If
'10K
If Sheets("SOW").Range("B228") = 0 Then
     Worksheets("SOW").Rows("228").Hidden = True
End If
'10L
If Sheets("SOW").Range("B229") = 0 Then
     Worksheets("SOW").Rows("229").Hidden = True
End If
'10M
If Sheets("SOW").Range("B230") = 0 Then
     Worksheets("SOW").Rows("230").Hidden = True
End If
'10N
If Sheets("SOW").Range("B231") = 0 Then
     Worksheets("SOW").Rows("231").Hidden = True
End If
'10O
If Sheets("SOW").Range("B232") = 0 Then
     Worksheets("SOW").Rows("232").Hidden = True
End If
'10P
If Sheets("SOW").Range("B233") = 0 Then
     Worksheets("SOW").Rows("233").Hidden = True
End If
'10Q
If Sheets("SOW").Range("B234") = 0 Then
     Worksheets("SOW").Rows("234").Hidden = True
End If
'10R
If Sheets("SOW").Range("B235") = 0 Then
     Worksheets("SOW").Rows("234").Hidden = True
End If
'10S
If Sheets("SOW").Range("B235") = 0 Then
     Worksheets("SOW").Rows("234").Hidden = True
End If
'10T
If Sheets("SOW").Range("B236") = 0 Then
     Worksheets("SOW").Rows("236").Hidden = True
End If
'10U
If Sheets("SOW").Range("B237") = 0 Then
     Worksheets("SOW").Rows("237").Hidden = True
End If

Call TurnOnNotifications
End Sub

上面的代码工作,只是不是以我想要的方式。我需要找到一种方法,让这些代码自动运行,尽可能快地一起运行,而不会显著降低工作簿的速度。

要使其更快,您应该

  • 收集要隐藏在范围变量中的所有行,以便最终可以一次隐藏所有行
  • 我强烈建议使用循环,而不是反复重复代码
  • 如果整个节已隐藏,则可以跳过测试该节中的每一行
  • 我建议如下:

    Public Sub SOWServicesEmptyCells()
        'define constants
        Const SectionSize As Long = 20      'how big are your sections
        Const SectionCount As Long = 10     'how many sections do you have
        Const SectionStartRow As Long = 28  'in which row does the first section start
    
        Dim SectionLastRow As Long          'in which row does the last section end (we can calculate that)
        SectionLastRow = SectionStartRow - 1 + (SectionCount * (SectionSize + 1))
    
        Call TurnOffFunctions 'you probably don't need this anymore (should not have any effect on speed)
    
        Dim wsSOW As Worksheet
        Set wsSOW = ThisWorkbook.Worksheets("SOW") 'define your worksheet
    
        Dim RangeToHide As Range 'this is where we collect all rows that we want to hide
    
        'check and collect all rows to hide
        Dim iRow As Long
        For iRow = SectionStartRow To SectionLastRow
            If (iRow - SectionStartRow) Mod (SectionSize + 1) = 0 Then
                'whole section
                If wsSOW.Cells(iRow, "B").Value = 0 Then
                    AddToRange RangeToHide, wsSOW.Rows(iRow & ":" & iRow + SectionSize)
                    iRow = iRow + SectionSize 'skip testing rows in this section if section is completely hidden
                End If
            Else
                'inside section
                If wsSOW.Cells(iRow, "C").Value = 0 Then
                    AddToRange RangeToHide, wsSOW.Rows(iRow)
                End If
            End If
        Next iRow
    
        'hide all rows at once
        If Not RangeToHide Is Nothing Then
            RangeToHide.EntireRow.Hidden = True
        End If
    
        Call TurnOnNotifications
    End Sub
    
    'Add a range to a variable
    Public Sub AddToRange(ByRef RangeToAddTo As Range, ByVal AddRange As Range)
        If RangeToAddTo Is Nothing Then
            Set RangeToAddTo = AddRange
        Else
            Set RangeToAddTo = Application.Union(RangeToAddTo, AddRange)
        End If
    End Sub
    

    如果节的数量及其大小或起始行是固定的,您可以将它们作为常量保留,但如果它们发生更改,我建议将它们更改为过程的参数:

    Public Sub SOWServicesEmptyCells(ByVal SectionSize As Long, ByVal SectionCount As Long, ByVal SectionStartRow As Long)
        'remove the `Const` lines 
        'rest of the code like above
    End Sub
    
    然后像这样调用这个过程

    Public Sub Test()
        SOWServicesEmptyCells(20, 10, 28) 
        'or
        SOWServicesEmptyCells(SectionSize:=20, SectionCount:=10, SectionStartRow:=28) 
    End If
    

    如果需要在不同的工作表上运行,甚至可以将工作表更改为参数:

    Public Sub ServicesEmptyCells(ByVal ws As Worksheet, ByVal SectionSize As Long, ByVal SectionCount As Long, ByVal SectionStartRow As Long)
        'remove the dim and set of `wsSOW`
        'and replace all `swSOW` with `ws`
    
    'then call it like
    ServicesEmptyCells(ThisWorkbook.Worksheets("SOW"), 20, 10, 28)
    

    为了让它更快,你应该

  • 收集要隐藏在范围变量中的所有行,以便最终可以一次隐藏所有行
  • 我强烈建议使用循环,而不是反复重复代码
  • 如果整个节已隐藏,则可以跳过测试该节中的每一行
  • 我建议如下:

    Public Sub SOWServicesEmptyCells()
        'define constants
        Const SectionSize As Long = 20      'how big are your sections
        Const SectionCount As Long = 10     'how many sections do you have
        Const SectionStartRow As Long = 28  'in which row does the first section start
    
        Dim SectionLastRow As Long          'in which row does the last section end (we can calculate that)
        SectionLastRow = SectionStartRow - 1 + (SectionCount * (SectionSize + 1))
    
        Call TurnOffFunctions 'you probably don't need this anymore (should not have any effect on speed)
    
        Dim wsSOW As Worksheet
        Set wsSOW = ThisWorkbook.Worksheets("SOW") 'define your worksheet
    
        Dim RangeToHide As Range 'this is where we collect all rows that we want to hide
    
        'check and collect all rows to hide
        Dim iRow As Long
        For iRow = SectionStartRow To SectionLastRow
            If (iRow - SectionStartRow) Mod (SectionSize + 1) = 0 Then
                'whole section
                If wsSOW.Cells(iRow, "B").Value = 0 Then
                    AddToRange RangeToHide, wsSOW.Rows(iRow & ":" & iRow + SectionSize)
                    iRow = iRow + SectionSize 'skip testing rows in this section if section is completely hidden
                End If
            Else
                'inside section
                If wsSOW.Cells(iRow, "C").Value = 0 Then
                    AddToRange RangeToHide, wsSOW.Rows(iRow)
                End If
            End If
        Next iRow
    
        'hide all rows at once
        If Not RangeToHide Is Nothing Then
            RangeToHide.EntireRow.Hidden = True
        End If
    
        Call TurnOnNotifications
    End Sub
    
    'Add a range to a variable
    Public Sub AddToRange(ByRef RangeToAddTo As Range, ByVal AddRange As Range)
        If RangeToAddTo Is Nothing Then
            Set RangeToAddTo = AddRange
        Else
            Set RangeToAddTo = Application.Union(RangeToAddTo, AddRange)
        End If
    End Sub
    

    如果节的数量及其大小或起始行是固定的,您可以将它们作为常量保留,但如果它们发生更改,我建议将它们更改为过程的参数:

    Public Sub SOWServicesEmptyCells(ByVal SectionSize As Long, ByVal SectionCount As Long, ByVal SectionStartRow As Long)
        'remove the `Const` lines 
        'rest of the code like above
    End Sub
    
    然后像这样调用这个过程

    Public Sub Test()
        SOWServicesEmptyCells(20, 10, 28) 
        'or
        SOWServicesEmptyCells(SectionSize:=20, SectionCount:=10, SectionStartRow:=28) 
    End If
    

    如果需要在不同的工作表上运行,甚至可以将工作表更改为参数:

    Public Sub ServicesEmptyCells(ByVal ws As Worksheet, ByVal SectionSize As Long, ByVal SectionCount As Long, ByVal SectionStartRow As Long)
        'remove the dim and set of `wsSOW`
        'and replace all `swSOW` with `ws`
    
    'then call it like
    ServicesEmptyCells(ThisWorkbook.Worksheets("SOW"), 20, 10, 28)
    

    “SOW”选项卡上的数据是否由公式填充?因为当公式重新计算时,
    工作表\u Change
    将不起作用。你需要
    工作表\u Calculate
    。而且-所有那些重复的行都是在乞求循环。@BigBen我几乎想发布一个修改过的代码,因为这也伤害了我的眼睛。。。哎呀,嘿,大本。哈哈,是的,我觉得宏可以做得更好,但我对使用它们还不熟悉。“SOW”选项卡上的数据由公式填充。每个SOW表中的每个单元格都分别链接到“服务”选项卡和“第三方”选项卡中表中相应的单元格。对,如上所述,您需要使用
    工作表\u计算
    。“SOW”选项卡上的数据是否由公式填充?因为当公式重新计算时,
    工作表\u Change
    将不起作用。你需要
    工作表\u Calculate
    。而且-所有那些重复的行都是在乞求循环。@BigBen我几乎想发布一个修改过的代码,因为这也伤害了我的眼睛。。。哎呀,嘿,大本。哈哈,是的,我觉得宏可以做得更好,但我对使用它们还不熟悉。“SOW”选项卡上的数据由公式填充。每个SOW表中的每个单元格分别链接到“服务”选项卡和“第三方”选项卡中表中相应的单元格。对,如上所述,您需要使用
    工作表\u计算