您好我在分配给同一工作簿中多个工作表上的表单按钮的宏中使用了以下代码
Sub RunAll()
Dim wks As Worksheet
For Each wks In ActiveWorkbook.Worksheets
wks.Select
Application.ScreenUpdating = False
Call UnprotectAll
Call BasicLoop
Call ProtectAll
Next wks
Application.ScreenUpdating = True
End Sub
这是它调用的宏
Sub UnprotectAll()
Dim sh As Worksheet
Dim yourPassword As String
yourPassword = ""
For Each sh In ActiveWorkbook.Worksheets
sh.Unprotect Password:=yourPassword
Next sh
End Sub
Sub BasicLoop()
For x = 5 To 32
If Cells(x, 9) <> red Then
Cells(x, 10) = "Basic"
Else: Cells(x, 10) = ""
End If
Next x
End Sub
Sub ProtectAll()
Dim sh As Worksheet
Dim yourPassword As String
yourPassword = ""
For Each sh In ActiveWorkbook.Worksheets
sh.Protect Password:=yourPassword
Next sh
End Sub
我想要更改的是,只有单击表单按钮而不是工作簿中的所有工作表才更新活动工作表?我还在学习,所以一个简单的解决方案将是最好的欢呼!
答案 0 :(得分:0)
您需要做的就是删除贯穿所有工作表的循环。您的代码应如下所示:
Sub RunAll()
Application.ScreenUpdating = False
Call UnprotectAll
Call BasicLoop
Call ProtectAll
Application.ScreenUpdating = True
End Sub
Sub UnprotectAll()
Dim yourPassword As String
yourPassword = ""
ActiveSheet.Unprotect Password:=yourPassword
End Sub
Sub BasicLoop()
For x = 5 To 32
If Cells(x, 9) <> red Then
Cells(x, 10) = "Basic"
Else
Cells(x, 10) = ""
End If
Next x
End Sub
Sub ProtectAll()
Dim yourPassword As String
yourPassword = ""
ActiveSheet.Protect Password:=yourPassword
End Sub
这只能在活动工作表上执行。
答案 1 :(得分:0)
考虑:
Sub RunAll()
Application.ScreenUpdating = False
Call UnprotectAll
Call BasicLoop
Call ProtectAll
Application.ScreenUpdating = True
End Sub
Sub UnprotectAll()
Dim sh As Worksheet
Dim yourPassword As String
yourPassword = ""
Set sh = ActiveSheet
sh.Unprotect Password:=yourPassword
End Sub
Sub BasicLoop()
For x = 5 To 32
If Cells(x, 9) <> red Then
Cells(x, 10) = "Basic"
Else
Cells(x, 10) = ""
End If
Next x
End Sub
Sub ProtectAll()
Dim sh As Worksheet
Dim yourPassword As String
yourPassword = ""
Set sh = ActiveSheet
sh.Protect Password:=yourPassword
End Sub