2016-09-28 84 views
0

在工作表1(viva-2)上,第11行的下拉(驗證)爲yes/no。 默認情況下,值爲「否」,工作表11(Manage-d)單元格區域A11:D30應該被禁用/鎖定。 選擇「是」,用戶應該能夠選擇Sheet11(Manage-d),並且範圍A11:D30中的單元格應該解鎖。VBA根據另一個工作表的單元格值選擇工作表

我是VBA的新手,但我正在努力學習。

Public Sub Worksheet_SelectionChange(ByVal Target As Range) 


    Dim RNG       As Range 


    If Target.Row = 11 Then 
    If Range("11").Value = "YES" Then 
      Sheets("Manage-d").Select 
      Sheets("Manage-d").Range("A11:D30").Locked = False 
      Sheets("Manage-d").Range("A11:D30").Activate 
     Else 
      Sheets("Manage-d").Range("A11:D30").Locked = True 
    End If 
    End If 
+0

範圍( 「11」)不是有效的範圍的參考。 –

回答

0

我用的Worksheet_Change而不是Worksheet_SelectionChange,使用戶不必ciack另一個單元觸發宏。

假設下拉(驗證)是Range("A11")

Private Sub Worksheet_Change(ByVal Target As Range) 

    If Not Intersect(Target, Range("A11")) Is Nothing Then 
     With Sheets("Manage-d") 

      .Range("A11:D30").Locked = (UCase(Target.Value) = "NO") 

      If UCase(Target.Value) = "YES" Then 
       Application.Goto .Range("A11:D30"), True 
      End If 

     End With 
    End If 

End Sub 

enter image description here

1

Range對象代表一個單元格或一系列的cells.This代碼爲我工作

If Range("A1").Value = "YES" Then '' Range A1 is the first cell 
     Sheets("Manage-d").Select 
     Sheets("Manage-d").Range("A11:D30").Locked = False 
     Sheets("Manage-d").Range("A11:D30").Activate 
    Else 
     Sheets("Manage-d").Range("A11:D30").Locked = True 
End If 
+0

@Thomas Inzina,我對你提供的代碼有兩個擔憂。 1.按預期工作,當下拉值爲是時,單元格被啓用/解鎖。我可以輸入數據,但問題是它沒有突出顯示單元格,當我點擊它時(在圖表管理-d上)2.是否有可能向用戶提示改變下拉值,當他嘗試當下拉的值爲「否」時點擊鎖定的單元格 – Manu

+0

@Thomas Inzina,你想讓我發表其他問題嗎?因爲這個問題得到了回答。 – Manu

+0

我認爲這是有道理的發佈新的問題。因此,我根據政策發佈了其他問題。請儘可能幫助http://stackoverflow.com/questions/39776578/vba-to-disable-sheet-based-on-cell-value – Manu

相關問題