| 
    
     |  | 初めて投稿します。 現在、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
 
 |  |