2016-09-28 143 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