Excel VBA-使用受保护的行和列进行排序

Excel VBA-使用受保护的行和列进行排序,vba,excel,Vba,Excel,我是一名普通/中级VBA开发人员,主要能够修改现有代码并重用代码来扩展Excel项目 我们遇到了这样一种情况:有人在Excel 2013中记录了一些宏,但它们在Excel 2003中无法工作。他们必须在Excel 2003中工作,因为这张工作表将主要用于机器的遗留性质 因此,我做了一些研究,并重新编写了宏的代码,以便在2003年使用。但是,在本工作簿中的4张工作表中,它仅在第一页起作用。想弄清楚原因让我抓狂。最后注意到,在其他3个工作表上,第一列和第一行受到保护。如果我取消对它们的保护,重新编写

我是一名普通/中级VBA开发人员,主要能够修改现有代码并重用代码来扩展Excel项目

我们遇到了这样一种情况:有人在Excel 2013中记录了一些宏,但它们在Excel 2003中无法工作。他们必须在Excel 2003中工作,因为这张工作表将主要用于机器的遗留性质

因此,我做了一些研究,并重新编写了宏的代码,以便在2003年使用。但是,在本工作簿中的4张工作表中,它仅在第一页起作用。想弄清楚原因让我抓狂。最后注意到,在其他3个工作表上,第一列和第一行受到保护。如果我取消对它们的保护,重新编写的宏就会工作

因此,我们需要一些关于如何使这些重新编写的宏在第一行和第一列受保护的情况下工作的建议

这是宏的一个示例(有多个这样的示例,只是范围不同):


您可以使用
UserInterFaceOnly
方法取消工作表的保护,以便在VBA代码中使用。这假设您的工作表使用密码“Something”进行密码保护,如果不省略密码部分的话

Dim Ws As Worksheet
Set Ws = Worksheets("24 GA KY")
Ws.Protect Password:="Something", UserInterFaceOnly:=True
...

您可以使用
UserInterFaceOnly
方法取消工作表的保护,以便在VBA代码中使用。这假设您的工作表使用密码“Something”进行密码保护,如果不省略密码部分的话

Dim Ws As Worksheet
Set Ws = Worksheets("24 GA KY")
Ws.Protect Password:="Something", UserInterFaceOnly:=True
...

我相信这可能已经做到了。上午进行更多测试,并将向您汇报。非常感谢。:)这条赛道没问题。再次感谢你。我相信这可能已经做到了。上午进行更多测试,并将向您汇报。非常感谢。:)这条赛道没问题。再次感谢你。