我是普通/中级VBA开发人员,主要能够修改现有代码并重复使用代码来扩展Excel项目。
我们遇到了某人在Excel 2013中录制了一些Macro但他们在Excel 2003中无法工作的情况。他们必须在Excel 2003中工作,因为该工作表的遗留性质主要的。
所以,我做了一些研究并重新编写了宏的代码,所以它将在2003年。但是,在这个工作簿中的4个工作表中,它只在第一页上工作。它让我疯狂地试图找出原因。最后注意到,在其他3个工作表中,第一列和第一行都是PROTECTED。如果我取消保护它们,重写的宏将起作用。
因此,需要一些关于如何使这些重写的宏与第一行和列保护一致的建议。
这是宏的一个示例(有多个像这样只有范围差异):
Sub KA24()
' Had to Convert Macro to work with the older version of Excel 2003 in the
shop - BW - 8/31/2017
Dim Ws As Worksheet
Set Ws = Worksheets("24 GA KY")
Application.ScreenUpdating = False
Ws.Range("D2:J9").Sort Key1:=Ws.Range("G2"), Order1:=xlAscending,
Header:=xlNo, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom,
DataOption1:=xlSortNormal
Application.ScreenUpdating = True
End Sub
答案 0 :(得分:0)
您可以使用UserInterFaceOnly
方法取消保护工作表以在VBA代码中使用。这假设您的工作表使用密码“Something”进行密码保护,如果不是只留下密码部分。
Dim Ws As Worksheet
Set Ws = Worksheets("24 GA KY")
Ws.Protect Password:="Something", UserInterFaceOnly:=True
...