-1

データ検証ルールを自分のデータに適用していますが、次のことを達成したいと考えています。

X別のセルに value が入力されている場合、値をセルに設定しますY。たとえば、あるセルに がある場合Not a Product Owner、次のセルをに設定しN/Aて編集できないようにします。最初のセルに とは異なる値が含まれている場合Not a Product Owner、次のセルを編集できるようにする必要があります (設定した検証ルールに従って値を許可します)。

4

1 に答える 1

1

これを行うVBAの方法は次のとおりです。

このコードはWorksheet_Change、ワークブックの関連シートのイベントモジュールに配置する必要があります。

つまり、列Aのセルがに変更されると、列BNot a product ownern/a追加され、セルは編集のためにロックされます。どちらかといえば、データ検証リストが追加され、セルのロックが解除されます。

このアプローチでは、シートをパスワードで保護する必要があることに注意してください。

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim Options As String
    Options = "1. Choice1, 2. Choice2, 3. Choice3" //Change this options

    ActiveSheet.Unprotect Password:="Your Password"
    Application.EnableEvents = False

    If Not Intersect(Range("A:A"), Target) Is Nothing Then
        If Target = "Not a product owner" Then
            Target.Offset(0, 1).Validation.Delete
            Target.Offset(0, 1) = "n/a"
            Target.Offset(0, 1).Locked = True
        Else
            Target.Offset(0, 1).Locked = False
            Target.Offset(0, 1).Validation.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:=Options
        End If
    End If

    Application.EnableEvents = True
    ActiveSheet.Protect Password:="Your Password"
End Sub
于 2013-03-08T10:51:20.023 に答える