0

我有一个相当复杂的工作簿,我已经非常严格地锁定它,因此在用户使用时它不会失去其结构完整性。它在 Excel 2003、2007 和 2010 中像梦一样工作,但是当我在 2013 年使用它时,如果我尝试输入未受保护的单元格,excel 认为它受保护,然后我可以手动取消对工作表的保护,但它仍然不会让我输入到单元格,然后我神秘地允许再次取消保护工作表,然后它允许我进入单元格并进入单元格格式以证明单元格绝对没有被锁定。然后当我导航到另一个受保护的工作表然后我发现它不受保护时,它变得更加复杂......

我越来越多地弄乱了这张纸,问题似乎是当我的宏将我从一张纸移到下一张时,它认为它仍然在前一张纸上。

例如,在前面板上,我将单元格 K16 命名为名为“ChangePW”的单元格

然后我运行我的宏来选择另一个工作表(如下所示)

Application.ScreenUpdating = False
Sheets("Income&Expenditure").Select
Worksheets("Income&Expenditure").Unprotect Password:="*****"
Range("B3").Value = "OSC" 
Worksheets("Income&Expenditure").Protect Password:="*****"
Range("B2").Select
Application.ScreenUpdating = True

然后,我继续在收入和支出选项卡中输入一些数据,但我收到警告,即使我选择了一个未受保护的单元格,工作表也受到保护。然后我单击收入和支出表上的单元格 K16,它仍然认为它称为“ChangePW”。因此,它在收入和支出表上应用了前页的保护布局。即使我单击底部的收入和支出选项卡并单击“显示代码”,它也会向我显示 Front Sheet 的代码!

所有的 vba 都在 2007 年和 2010 年完美运行,所以我现在完全被难住了。

过去两周我一直在浏览论坛试图找到一个没有成功的解释,有没有其他人经历过这样的事情或知道原因?我重申它在所有其他版本的 Excel 中都能完美运行......

谢谢

4

1 回答 1

0

我一直在解决同样的行为。该错误在于从模式用户窗体打开文件。解决方案是将用户窗体打开为无模式。要么调用:

MyForm.Show False

或将 Layout 事件过程添加到用户窗体:

Private Sub UserForm_Layout()
    Static fSetModal As Boolean
    If fSetModal = False Then
        fSetModal = True
        Me.Hide
        Me.Show 1
    End If
End Sub

阅读:http: //msdn.microsoft.com/en-us/library/office/dn251093.aspx

于 2013-08-23T13:41:39.627 回答