Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10 Pro : Excel 2016)
セルの値によって図形をオンオフさせたい。
投稿日時: 19/08/01 14:22:49
投稿者: casey

はじめまして。
 
エクセルで、BE5:BE13が全てOKになったら、表示している図形を消す。
という事をやりたいです。
 
BE14に、「{=IF(and(BE5:BE13="OK"),"OK","NG")}」という式を入れて全てOKになったら、「OK」となるようにしています。
 
BE14がOKの時は、図形を非表示にする。NGの時は、図形を表示する。
というVBAを作りたいですがうまく行きませんでした。
 
図形はオートシェイプ内の長方形で作成していて、「myshape」と名前を付けています。
 
よろしくお願いします。

投稿日時: 19/08/01 14:43:53
投稿者: casey

BE14に直接OK・NGを入力すれば 表示⇔非表示を切り替え出来たのですが、
計算式で出た結果に反応させることは出来るのでしょうか。
 
Private Sub Worksheet_Change(ByVal Target As Range)
 
    If Target.Address = "$BE$14" Then
        Select Case Range("BE14").Value
            Case "NG"
                ActiveSheet.Shapes("myshape").Visible = True
            Case "OK"
                ActiveSheet.Shapes("myshape").Visible = False
        End Select
    End If
     
 End Sub

回答
投稿日時: 19/08/01 15:38:35
投稿者: Suzu

計算結果に対し判定を行いたいのであれば
計算結果に影響を与えるセルのChangeの際に判定を行えば良いです。
 
つまり、Changeイベントの 判定で Target が、E5:BE13 の範囲のセルと一致する場合に
BE14 の値を参照し、myshapeの Visible を操作すれば良いです。
 
Target が、E5:BE13 の範囲のセルと一致する

 
If Not Intersect(Target, Range("E5:BE13")) Is Nothing Then
  '一致する場合
Else
  '不一致の場合
End If
 
となります。

回答
投稿日時: 19/08/03 09:56:38
投稿者: WinArrow
投稿者のウェブサイトに移動

参考意見
 
VBAを使わなくても画像を切替できます
 
ON用の図形、OFF用の図形を用意します。
 
VLOOKUP関数を使って切替できます
 
↓のWEBページを参考にトライしてみてください。
 
https://www.forguncy.com/blog/20170818_vlookup_picture

投稿日時: 19/08/04 11:02:54
投稿者: casey

Suzu様
 
ご回答ありがとうございます。
 
計算結果に影響を与えるセルのChangeの際に判定というヒントを頂いて考えた結果、
計算結果に影響を与えるセルがいろんなところにちりばめられていた為、
Worksheet_Changeではなく、Worksheet_Calculateを使用することで解決できました。
 
ありがとうございました。
 
 
WinArrow様
 
ご回答ありがとうございます。
 
そのやり方は知っていたのですが、そちらですと画像が表示されていないときも、
その場所に空白の画像がある。という判定になってしまいます。
 
今回は完全に画像を非表示にしたかったのでその方法ではない方法を模索していました。