Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


15 / 13114 ツリー ←次へ | 前へ→

【79762】セル値によってオートシェイプの表示非表示 Kazu 18/4/5(木) 16:47 質問[未読]

【79772】Re:セル値によってオートシェイプの表示非... γ 18/4/8(日) 5:55 回答[未読]
【79774】Re:セル値によってオートシェイプの表示非... Kazu 18/4/9(月) 13:36 お礼[未読]

【79772】Re:セル値によってオートシェイプの表示...
回答  γ  - 18/4/8(日) 5:55 -

引用なし
パスワード
   > > 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で使用しているセルが別シートであれば、それを変更しても
  イベントプロシージャは起動しません。
 
 

【79774】Re:セル値によってオートシェイプの表示...
お礼  Kazu  - 18/4/9(月) 13:36 -

引用なし
パスワード
   Y さん マナ さん

返答ありがとうございます。

Yさんのおっしゃる通り自分の知識不足を痛感しております。

何年か前に、少し勉強した程度で『できるだろう』と無茶をしました。

今回の御返答の意味を理解できるように、もう一度勉強して

出直ししたいと思います。


こんな素人に返答いただきありがとうございました。


PS・・・Yさん 詳しい回答をありがとうございます。

参考にしながら理解を深めたいと思います。

15 / 13114 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free