2015-01-02 18 views
0

我們正在使用Excel文件將數據上傳到數據庫。在excel.in第一個工作表中有許多工作表,其中有一個按鈕(名爲Export)來自剩餘工作表的數據到數據庫。在一張表中我寫了基於邏輯的鎖定單元。以下是代碼。通過提供工作表(索引).Unprotect,Excel中的按鈕不起作用

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。在測試時,我注意到「導出」按鈕一直處於禁用狀態。

當我恢復更改時,啓用按鈕。

我找不到解決此問題的任何解決方案。

請給予任何解決辦法。

在此先感謝。

+0

** Index **是一個全局變量? –

+0

當你說你點擊了Export按鈕時,你的意思是一個你命名爲Export的按鈕,並且有它的代碼?如果是這樣,那麼代碼中的所有內容呢?在那裏試圖寫入受保護的工作表是否有價值? – peege

+0

@ Maciej Los:理解我只是給了'索引' - 它會是一個數字值。 –

回答

-1

如果您有密碼,您應該添加optional參數。

rowCount時=範圍( 「A」 & Rows.Count).END(xlUp).Row

在這裏以及在以下情況下,嘗試添加片地址等:

rowCount時= Sheet(1).Range(「A」& Rows.Count).End(xlUp).Row

+0

您是否在OP代碼中看到任何使用Protect方法的密碼?我不。 –

+0

@MaciejLos在執行宏之前,可能工作表是由用戶設置的密碼保護的。 如果您無權訪問單元,系統將返回1004錯誤。 – Liniel