且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

取消隐藏行一一

更新时间:2023-12-05 19:34:04

在HideAllJobs中将Counter重置为0,并使用Public变量代替静态行

Reset your Counter to 0 in HideAllJobs and use a Public variable in place of the static line

Public counter As Integer

Sub HideAllJobs()
   'Static counter As Byte
   Application.ScreenUpdating = False
   ThisWorkbook.Sheets("Filling form").Unprotect
   Rows("49:173").EntireRow.Hidden = True
   counter = 0
   ThisWorkbook.Sheets("Filling form").Protect
   Application.ScreenUpdating = True
End Sub

Sub UnhideJobs()
    'Static counter As Byte
    counter = (counter + 1) Mod 26
    Select Case counter
      Case 1
        Application.ScreenUpdating = False
        ThisWorkbook.Sheets("Filling form").Unprotect
            Rows("169:173").EntireRow.Hidden = False
        ThisWorkbook.Sheets("Filling form").Protect
        Application.ScreenUpdating = True

      Case 2
        Application.ScreenUpdating = False
        ThisWorkbook.Sheets("Filling form").Unprotect
            Rows("164:168").EntireRow.Hidden = False
        ThisWorkbook.Sheets("Filling form").Protect
        Application.ScreenUpdating = True

      Case 3
        Application.ScreenUpdating = False
        ThisWorkbook.Sheets("Filling form").Unprotect
            Rows("159:163").EntireRow.Hidden = False
        ThisWorkbook.Sheets("Filling form").Protect
        Application.ScreenUpdating = True

      Case 4
        Application.ScreenUpdating = False
        ThisWorkbook.Sheets("Filling form").Unprotect
            Rows("154:158").EntireRow.Hidden = False
        ThisWorkbook.Sheets("Filling form").Protect
        Application.ScreenUpdating = True

      Case 5
        Application.ScreenUpdating = False
        ThisWorkbook.Sheets("Filling form").Unprotect
            Rows("149:153").EntireRow.Hidden = False
        ThisWorkbook.Sheets("Filling form").Protect
        Application.ScreenUpdating = True

      Case 6
        Application.ScreenUpdating = False
        ThisWorkbook.Sheets("Filling form").Unprotect
            Rows("144:148").EntireRow.Hidden = False
        ThisWorkbook.Sheets("Filling form").Protect
        Application.ScreenUpdating = True

      Case 7
        Application.ScreenUpdating = False
        ThisWorkbook.Sheets("Filling form").Unprotect
            Rows("139:143").EntireRow.Hidden = False
        ThisWorkbook.Sheets("Filling form").Protect
        Application.ScreenUpdating = True

      Case 8
        Application.ScreenUpdating = False
        ThisWorkbook.Sheets("Filling form").Unprotect
            Rows("134:138").EntireRow.Hidden = False
        ThisWorkbook.Sheets("Filling form").Protect
        Application.ScreenUpdating = True

      Case 9
        Application.ScreenUpdating = False
        ThisWorkbook.Sheets("Filling form").Unprotect
            Rows("129:133").EntireRow.Hidden = False
        ThisWorkbook.Sheets("Filling form").Protect
        Application.ScreenUpdating = True

      Case 10
        Application.ScreenUpdating = False
        ThisWorkbook.Sheets("Filling form").Unprotect
            Rows("124:128").EntireRow.Hidden = False
        ThisWorkbook.Sheets("Filling form").Protect
        Application.ScreenUpdating = True

      Case 11
        Application.ScreenUpdating = False
        ThisWorkbook.Sheets("Filling form").Unprotect
            Rows("119:123").EntireRow.Hidden = False
        ThisWorkbook.Sheets("Filling form").Protect
        Application.ScreenUpdating = True

      Case 12
        Application.ScreenUpdating = False
        ThisWorkbook.Sheets("Filling form").Unprotect
            Rows("114:118").EntireRow.Hidden = False
        ThisWorkbook.Sheets("Filling form").Protect
        Application.ScreenUpdating = True

      Case 13
        Application.ScreenUpdating = False
        ThisWorkbook.Sheets("Filling form").Unprotect
            Rows("109:113").EntireRow.Hidden = False
        ThisWorkbook.Sheets("Filling form").Protect
        Application.ScreenUpdating = True

      Case 14
        Application.ScreenUpdating = False
        ThisWorkbook.Sheets("Filling form").Unprotect
            Rows("104:108").EntireRow.Hidden = False
        ThisWorkbook.Sheets("Filling form").Protect
        Application.ScreenUpdating = True

      Case 15
        Application.ScreenUpdating = False
        ThisWorkbook.Sheets("Filling form").Unprotect
            Rows("99:103").EntireRow.Hidden = False
        ThisWorkbook.Sheets("Filling form").Protect
        Application.ScreenUpdating = True

      Case 16
        Application.ScreenUpdating = False
        ThisWorkbook.Sheets("Filling form").Unprotect
            Rows("94:98").EntireRow.Hidden = False
        ThisWorkbook.Sheets("Filling form").Protect
        Application.ScreenUpdating = True

      Case 17
        Application.ScreenUpdating = False
        ThisWorkbook.Sheets("Filling form").Unprotect
            Rows("89:93").EntireRow.Hidden = False
        ThisWorkbook.Sheets("Filling form").Protect
        Application.ScreenUpdating = True

      Case 18
        Application.ScreenUpdating = False
        ThisWorkbook.Sheets("Filling form").Unprotect
            Rows("84:88").EntireRow.Hidden = False
        ThisWorkbook.Sheets("Filling form").Protect
        Application.ScreenUpdating = True

      Case 19
        Application.ScreenUpdating = False
        ThisWorkbook.Sheets("Filling form").Unprotect
            Rows("79:83").EntireRow.Hidden = False
        ThisWorkbook.Sheets("Filling form").Protect
        Application.ScreenUpdating = True

      Case 20
        Application.ScreenUpdating = False
        ThisWorkbook.Sheets("Filling form").Unprotect
            Rows("74:78").EntireRow.Hidden = False
        ThisWorkbook.Sheets("Filling form").Protect
        Application.ScreenUpdating = True

      Case 21
        Application.ScreenUpdating = False
        ThisWorkbook.Sheets("Filling form").Unprotect
            Rows("69:73").EntireRow.Hidden = False
        ThisWorkbook.Sheets("Filling form").Protect
        Application.ScreenUpdating = True

      Case 22
        Application.ScreenUpdating = False
        ThisWorkbook.Sheets("Filling form").Unprotect
            Rows("64:68").EntireRow.Hidden = False
        ThisWorkbook.Sheets("Filling form").Protect
        Application.ScreenUpdating = True

      Case 23
        Application.ScreenUpdating = False
        ThisWorkbook.Sheets("Filling form").Unprotect
            Rows("59:63").EntireRow.Hidden = False
        ThisWorkbook.Sheets("Filling form").Protect
        Application.ScreenUpdating = True

      Case 24
        Application.ScreenUpdating = False
        ThisWorkbook.Sheets("Filling form").Unprotect
            Rows("54:58").EntireRow.Hidden = False
        ThisWorkbook.Sheets("Filling form").Protect
        Application.ScreenUpdating = True

      Case 25
        Application.ScreenUpdating = False
        ThisWorkbook.Sheets("Filling form").Unprotect
            Rows("49:53").EntireRow.Hidden = False
        ThisWorkbook.Sheets("Filling form").Protect
        Application.ScreenUpdating = True

      Case 26
        Application.ScreenUpdating = False
        ThisWorkbook.Sheets("Filling form").Unprotect
            Rows("49:53").EntireRow.Hidden = False
        ThisWorkbook.Sheets("Filling form").Protect
        Application.ScreenUpdating = True
    End Select
End Sub

附录-新的精简Unhide例程

Addendum - New condensed UnHide Routine

Sub NewUnhideJobs()
    Dim RngTxt As String, RngAR() As String, ThisRng As String

    counter = (counter + 1) Mod 26
    counter = IIf(counter = 0, 1, counter)

    RngTxt = "169:173_164:168_159:163_154:158_149:153_144:148_139:143_134:138_129:133"
    RngTxt = RngTxt & "_124:128_119:123_114:118_109:113_104:108_99:103_94:98"
    RngTxt = RngTxt & "_89:93_84:88_79:83_74:78_69:73_64:68_59:63_54:58_49:53_49:53"

    RngAR = Split(RngTxt, "_")
    ThisRng = RngAR(counter - 1)

    Application.ScreenUpdating = False
    ThisWorkbook.Sheets("Filling form").Unprotect
    ThisWorkbook.Sheets("Filling form").Rows(ThisRng).EntireRow.Hidden = False
    ThisWorkbook.Sheets("Filling form").Protect
    Application.ScreenUpdating = True
End Sub

您还可以使用一种更简单的方法来进一步减少代码-您的范围是从174 -1开始以5行为增量,然后减小,因此

You could also use a simpler method and reduce code further - your ranges are in 5 row increments starting from 174 -1 and reducing, so

ThisRng = "" & (174 - (counter * 5)) & ":" & (174 - (counter * 5) + 4)

可以工作,并且省去几行

would work and eliminate a few more lines

===================================

=====================================

根据评论

我本来以下一行是错误的

I had the following line wrong originally

ThisWorkbook.Sheets("Filling form").Rows(ThisRng).EntireRow.Hidden = False