VBA根据另一张纸的单元格值选择纸张

时间:2016-09-28 03:42:32

标签: excel vba excel-vba

在工作表1(viva-2)上,第11行有一个下拉(验证),是/否。 默认情况下,值将为“no”,并且应禁用/锁定表11(Manage-d)单元格范围A11:D30。 选择“是”,用户应该能够选择Sheet11(Manage-d),并且应该解锁范围A11:D30中的单元格。

我是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

2 个答案:

答案 0 :(得分:1)

Range对象表示单个单元格或一系列单元格。此代码适用于我

 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

答案 1 :(得分:0)

我使用Worksheet_Change而不是Worksheet_SelectionChange,这样用户就不必使用其他单元格来触发宏。

假设下拉(验证)在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