Excel 按逻辑顺序取消隐藏行
我有在Excel工作表中隐藏和取消隐藏行的代码。在user1302114()的帮助下,代码被缩短了,现在它的运行速度更快了 目前的问题是:Excel 按逻辑顺序取消隐藏行,excel,vba,Excel,Vba,我有在Excel工作表中隐藏和取消隐藏行的代码。在user1302114()的帮助下,代码被缩短了,现在它的运行速度更快了 目前的问题是: 运行两次NewUnhideJobs(第二部分的位置) 运行一次HideAllJobs 运行NewUnhideJobs 因此,我们有第三节的位置,而不是第一节的位置。因此,NewUnhideJobs不会从0开始,而是继续执行前面的过程 尝试将静态计数器作为字节删除,但没有它,代码无法运行 counter=0也在hidealjobs中进行了尝试,但未成功 隐藏行
NewUnhideJobs
(第二部分的位置)HideAllJobs
NewUnhideJobs
NewUnhideJobs
不会从0开始,而是继续执行前面的过程
尝试将静态计数器作为字节删除,但没有它,代码无法运行
counter=0
也在hidealjobs
中进行了尝试,但未成功
隐藏行:
Sub NewUnhideJobs()
Static counter As Byte
Dim RngTxt As String, RngAR() As String, ThisRng As String
counter = (counter + 1) Mod 26
ThisRng = "" & (174 - (counter * 5)) & ":" & (174 - (counter * 5) + 4)
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
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 NewUnhideJobs()
Static counter As Byte
Dim RngTxt As String, RngAR() As String, ThisRng As String
counter = (counter + 1) Mod 26
ThisRng = "" & (174 - (counter * 5)) & ":" & (174 - (counter * 5) + 4)
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
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
必须将计数器声明为全局变量
Public counter As Long 'public variable
Sub NewUnhideJobs()
Dim RngTxt As String, RngAR() As String, ThisRng As String
counter = (counter + 1) Mod 26
ThisRng = "" & (174 - (counter * 5)) & ":" & (174 - (counter * 5) + 4)
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
Sub HideAllJobs()
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
否则,您的计数器=0
对NewUnhideJobs
中的计数器没有任何影响,因为您已声明了两个不同的计数器
变量,每个过程/子过程一个。您必须将计数器声明为全局变量
Public counter As Long 'public variable
Sub NewUnhideJobs()
Dim RngTxt As String, RngAR() As String, ThisRng As String
counter = (counter + 1) Mod 26
ThisRng = "" & (174 - (counter * 5)) & ":" & (174 - (counter * 5) + 4)
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
Sub HideAllJobs()
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
否则,您的计数器=0
不会对NewUnhideJobs
中的计数器产生任何影响,因为您已声明了两个不同的计数器
变量,每个过程/子过程一个。也张贴在此处:只要在模块顶部的所有子过程之外
尝试声明公共计数器。并将subs中的静态计数器作为Byte
移除。否则,counter=0
将不会对NewUnhideJobs
@P中的计数器产生任何影响ᴇʜ现在似乎起作用了!谢谢师父!我想你可以添加你的评论作为答案!完成后,您可以将其标记为已解决。也张贴在此处:尝试声明公共计数器,只要它位于模块顶部的所有子计数器之外。并将subs中的静态计数器作为Byte
移除。否则,counter=0
将不会对NewUnhideJobs
@P中的计数器产生任何影响ᴇʜ现在似乎起作用了!谢谢师父!我想你可以添加你的评论作为答案!完成后,可以将其标记为已解决。