| 
    
     |  | ▼まき さん: >こんにちは
 >コードがうまく動かないのでご教示願います
 >
 >[やりたいこと]
 >E列の指定された範囲に、○○○という文字列を含む文が入力されたら 同じ行のH列にデータの入力規則が設定されるようにしたい
 >
 >シートモジュールに以下のコードを書いています
 >
 >Private Sub Worksheet_Change(ByVal Target As Range)
 >  Dim c As Object
 >
 >For Each c In Range("$E23:$E60")
 >
 > If c.Value Like "*○○○*" Then
 >      x = ActiveCell.Row
 >      Cells(x, 9).Select
 >     MsgBox x
 >  With Selection.Validation
 >    .Delete
 >    .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
 >    xlBetween, Formula1:="=$X:$X"
 >    .IgnoreBlank = True
 >    .InCellDropdown = True
 >    .InputTitle = ""
 >    .ErrorTitle = ""
 >    .InputMessage = ""
 >    .ErrorMessage = ""
 >    .IMEMode = xlIMEModeNoControl
 >    .ShowInput = True
 >    .ShowError = True
 >  End With
 > Else
 > Exit Sub
 > End If
 >Next c
 >End Sub
 >
 >するとまったく動きません。○○○という文字列を認識してないのでしょうか?
 >ちなみにelse Exitsubを省略すると、○○○が含まれていなくてもH列に入力規則が設定されてしまいます
 >どこがおかしいのでしょうか?
 
 今回提示されたプログラムではシートのどこかのセルで変化があったときE23〜E60
 に"○○○"が含まれていることを上からチェックし処理するように見受けられますが,
 処理したい行に行く前にExitSubで終了となる可能性がかなりあると思いますので,
 変化したセル(Target)がE23〜E60のとき処理を実行するようにしてはいかがでしょうか?
 
 
 |  |