|
初めて投稿します。
現在、vbaで入力規則を設定しようとしています。
シート保護をかける前は問題なく動作するのですが、保護をかける設定を記述するとエラーになってしまいます。。
最初に種類を選ぶと、その種類に該当するプランのリストがでて、その種類にサブ項目がある場合、サブ項目を選ぶことができるというような仕様です。
以下の「Range("ABC").Validation.Add Type:=xlValidateList, Formula1:="=" & testp」の部分でエラーになります。
他の箇所ではエラーが出ません。
どなたかわかる方ご教示ください。よろしくお願いします。
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("種類,プラン")) Is Nothing Then
Const MYPW = "abc"
Worksheets("入力").Unprotect MYPW
Select Case Target.Name.Name
Case "種類"
Dim carname As Variant
carname = Range("種類").Value
If carname = "種類を選んでください" Then
Dim Selna As Variant
Selna = Array("テスト1", "テスト2", "テスト3")
For Each N In Selna
Range(N).Validation.Delete
Range(N).Value = "種類を選んでください"
Next
Else
Range("プラン").Validation.Delete
Range("プラン").Validation.Add Type:=xlValidateList, Formula1:="=" & cname
Range("サブ").Value = "種類・プランを選んでください"
Range("サブ項目").Validation.Delete
Range("サブ項目").Value = "プランを選んでください"
Range("プラン").Value = "プランを選んでください"
Range("サブ項目種類").Value = "プランを選んでください"
End If
Case "プラン"
Dim chkn As Variant
Dim chkh As Variant
chkn = Range("chkn").Value
chkh = Range("chkh").Value
If Range("プラン").Value <> "プランを選択してください" Then
If chkn = "あり" Then
Range("サブ項目").Validation.Delete
Range("サブ項目").Validation.Add Type:=xlValidateList, Formula1:="=glade"
Range("サブ項目").Value = "サブ項目を選択できます"
Range("サブ項目種類").Value = "サブ項目種類を選択してください"
Else
Range("サブ").Validation.Delete
If Range("chkn").Value = "-" Then
Range("サブ").Value = "サブ項目はありません"
Else
Range("サブ").Value = "プランを選んでください"
End If
End If
If chkh <> "" Then
Range("ABC").Value = "ABCを選択してください"
Range("ABC").Validation.Add Type:=xlValidateList, Formula1:="=" & testp
Else
Range("ABC").Validation.Delete
Range("ABC").Value = "種類・プランを選んでください"
End If
End If
End Select
Worksheets("入力").Protect Password:=MYPW, UserInterfaceOnly:=True
End If
End Sub
|
|