| 
    
     |  | > > Sub 入力() > > Private Sub Worksheet_Change(ByVal Target As Range)
 > > というのはどうしてですか?
 >
 > ネットで調べまして、これを使えば思い通りのことができるかな?と
 > 思って使用しており、他意はありません。
 
 質問の意味が通じていませんね。
 
 Private Sub Worksheet_Change(ByVal Target As Range)
 というのは、イベントプロシージャーというものです。
 これの意味は理解していますか?
 
 セル(たち)の変更を実行したときに、自動で実行されるプロシージャです。
 イベントプロシージャはシートモジュールに書く必要がありますが、
 そうしていますか?
 
 つまり、
 Sub 入力()
 というプロシージャの中で使うようなものではないのです。
 たぶん、
 Private Sub Worksheet_Change(ByVal Target As Range)
 がプロシージャの宣言ということが理解されていないのでしょう。
 
 警告の意味は、
 Sub 入力()がプロシージャの開始なので、
 その終了を示す End Subが不足している、
 というものです。理解していますか?
 
 そもそも
 Sub 入力()
 などというものは不要です。
 
 といった、かなり基本的な事の理解が不足していますから、
 これをきっかけにして、テキストで勉強することを薦めます。
 簡単にコピペして動かせるようなものではありません。
 ちゃんと理屈を抑えることも必要です。
 そのほうが却って近道です。
 これを良いチャンスに変えることを薦めます。
 
 ----------------
 以上を理解されたことを前提にコメントするなら、
 他の回答者さんが確認質問されているように、
 C14の変化そのものをキャッチすることは(通常の手段では)できませんから、
 C14で使っているセルが変更されたときに動作するプロシージャにします。
 
 それで、
 >どんな式が入力されているのですか。
 と確認されているのです。それに基づいて助言されようとしています。
 
 その時に、C14の値に基づいて、表示・非表示を判定して、
 Shapeに変更を加えるわけです。
 
 例えば、こんな風にです。
 Private Sub Worksheet_Change(ByVal Target As Range)
 '変更されたセルが、C14で使っているセルでなければ抜ける
 If Intersect(Target, Range("C14").Precedents) Is Nothing Then Exit Sub
 
 Select Case Range("C14").Value
 Case True
 Me.Shapes("Rectangle 1").Visible = True
 Case False
 Me.Shapes("Rectangle 1").Visible = False
 End Select
 End Sub
 
 留意点は以下。
 (1)このコードを対象のシートのシートモジュールに書き込みます。
 そうしたうえで、C14で使用しているセルの値を変更してみてください。
 (2)もっとも、関係がないセルの値がかわっても常に処理を実行させていいなら
 話は別です。一行目の判定は不要になります。
 (3)なお、C14で使用しているセルが別シートであれば、それを変更しても
 イベントプロシージャは起動しません。
 
 
 
 |  |