2016-07-20 18 views
0

我有一個代碼將根據下拉列表中的單元格值重命名工作表。我有兩個下拉列表「C21」和「G17」和按鈕,這將有助於我重命名錶格。用於禁用單元格的VBA代碼

我的問題是,我需要禁用從「H1」到「M40」的單元格,以便用戶在重命名工作表之前不能輸入數據。基本上,如果按鈕被成功執行,單元格應該是活動的,如果不是「否」。你能幫我麼?

Sub RenameCurrentSheet() 
Application.DisplayAlerts = False 
Application.ScreenUpdating = False 
    Dim worksh As Integer 
    Dim worksheetexists As Boolean 
    Dim ws As Worksheet 
    worksh = Application.Sheets.Count 
    worksheetexists = False 
    ThisWorkbook.Unprotect Password:="xyz" 
    For x = 1 To worksh 
    If Worksheets(x).Name = ActiveSheet.Range("C21").Value & "-" & ActiveSheet.Range("G17").Value Then 
      worksheetexists = True 
      MsgBox ("Sheet with the name " + Worksheets(x).Name + " Already Exists!!!") 
    Exit For 
    End If 
    Next x 
    If worksheetexists = False Then 
    For x = 1 To worksh 
     If ActiveSheet.Name = "MainSheet" Then 
      MsgBox "You Cannot Change Name of This Sheet!!!" 
     Else 
      ActiveSheet.Name = Range("C21").Value & "-" & Range("G17").Value 
      Exit For 
     End If 
    Next x 
    End If 

Application.DisplayAlerts = True 
ThisWorkbook.Protect Password:="xyz" 
End Sub 

請幫忙!!

回答

0

在你的代碼來測試表名稱,你可以用代碼禁用細胞:

Range("H1:M40").Locked = True 

,然後在名稱不再重複那就等於假。

注意這隻會在工作表受到保護時才起作用。

編輯:

Private Sub Worksheet_SelectionChange(ByVal Target As Range) 
    If Target.Count > 1 Then Exit Sub 
    Set myRng = Range("H1:M40") 
    For Each C In myRng 
     If C.Address = Target.Address And ActiveSheet.Name = ActiveSheet.Range("C21").Value & "-" & ActiveSheet.Range("G17").Value Then 
      ActiveSheet.Unprotect Password:= "xyz" 
      Range("H1:M40").Locked = False 
      ActiveSheet.Protect Password:= "xyz" 
      Exit For 
     Else 
      ActiveSheet.Unprotect Password:= "xyz" 
      Range("H1:M40").Locked = True 
      ActiveSheet.Protect Password:= "xyz" 
     End If 
    Next C 
End Sub 
+0

我已經包括在按鈕上的MainSheet而不是上面的行(I上面提供的代碼被賦予對按鈕/模塊)。當表格名稱dosent與2個單元格的值匹配時,單元格現在被禁用。但問題是當表格名稱匹配時,單元格需要4-5次點擊才能使其處於活動狀態並且令人討厭。我做錯了什麼.. – sady

+0

請參閱我上面編輯的代碼,瞭解有關何時鎖定/解鎖這些單元格的工作表選擇事件。 – Jason

+0

謝謝傑森工作! – sady

相關問題