通过提供工作表(索引).Unprotect,Excel中的按钮不起作用

时间:2015-01-02 10:09:31

标签: excel vba excel-vba

我们正在使用Excel文件将数据上传到DB。在excel中有多张工作表。在第一张工作表中有一个按钮(名为Export)将所有数据从剩余工作表导出到DB。我在一张纸上写了基于逻辑的锁定单元格。以下是代码。

Function LockingExpiryDateCells(ByVal Target As Range, ByVal ExpDateColOffset, ByVal Expdate As String)
Dim rowCount As Integer

rowCount = Range("A" & Rows.Count).End(xlUp).Row ' get the count of rows that contains records
ActiveSheet.Unprotect
Cells.Locked = False

If (ExpDateColOffset >= 0) Then
    Target.Cells.Offset(0, ExpDateColOffset).Value = Expdate
End If

For i = 7 To rowCount 
    If (Cells(i, 4) = "A") Then  
        Cells(i, 7).Locked = True 
    Else
        Cells(i, 7).Locked = False 
    End If
Next i
ActiveSheet.Protect

结束功能

导出时(通过单击“导出”按钮),我收到以下错误。 enter image description here 谷歌搜索时,我认为这是保护工作表的原因(每个工作表都有一个宏用于验证内容)。 所以我给了代码以避免这个错误

Private Sub Worksheet_Deactivate()
    Worksheets(Index).UnProtect
End Sub

然后这个错误就消失了。并且在我的系统中一切正常。所以我部署到QA。测试时我注意到导出按钮一直处于禁用状态。

当我还原更改时,按钮已启用。

我无法找到解决此问题的任何解决方案。

请给出任何解释。

提前致谢。

1 个答案:

答案 0 :(得分:-1)

如果您有密码,则应添加optional参数。

  

rowCount =范围(" A"& Rows.Count).End(xlUp).Row

在这里和以下情况下,尝试添加表格地址,如:

  

rowCount = Sheet(1).Range(" A"& Rows.Count).End(xlUp).Row