2
以前のユーザー入力に基づいてユーザーエントリを制限するExcelでいくつかのデータ検証を実行しようとしています。私はこれをワークシートの変更に基づいて更新したいと思います。コードは次のとおりです。ワークシートの変更によるデータ検証
Private Sub Worksheet_Change(ByVal Target As Range)
'If Target.Cells.Count > 1 Then Exit Sub
'Checks if cell is Record or Assumption and applies appropriate data validation
Dim Cell As Range
Application.EnableEvents = False
If Target.Column = 59 Or 72 Or 85 Or 98 Or 111 Then 'Refers to the columns that require Rec/Ass
Set Cell = Target.Offset(0, 3)
'MsgBox Cell & " " & Target.Value 'USED TO ERROR CHECK
If Target.Value = "N/A" Then
Cell.Validation.Delete
Cell.Value = vbNullString
Cell.Offset(0, 1).Validation.Delete
Cell.Offset(0, 1).Value = vbNullString
Else
If Target.Value = "Record" Then
With Cell.Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:="=Record"
End With
ElseIf Target.Value = "Assumption" Then
Cell.Validation.Delete
Cell.Value = vbNullString
Cell.Offset(0, 1).Value = vbNullString
End If
End If
Set Cell = ActiveCell
End If
If Target.Column = 62 Or 75 Or 88 Or 101 Or 114 Then 'Refers to the columns that require Doc Type
Desig = Application.VLookup(Target.Value, Sheets("Record Source Chart").Range("RecordDesig"), 21, False)
If Target.Value = "" Then Exit Sub
Else
Set Cell = Target.Offset(0, 1)
With Cell.Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:="=" & Desig
End With
End If
Application.EnableEvents = True
End Sub
2番目のif文に問題があります。このコードを実行すると、2番目のdata.validationは追加されません。これは、更新するまでセルが空白になっていると思いますが、更新しても検証は行われません。また、Target.Column = 59でもIf Target.Value = "" Then Exit Sub
を削除すると、2番目のif文が実行され、 "型の不一致"エラーが返されます。どんな助けでも大歓迎です、ありがとうございます。
私は完全に "ケース"句について知りませんでした。助けてくれてありがとう、私はそれを解決したと思う。問題は、私は常に "Target.Column"をオフセットによって変更していたことでした。あなたの最初の解決策はうまくいかなかった、私が直面していたのと同じ問題を引き起こした。 「ケースの選択」が修正されたようですが、もう一度お試しください! –