• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:複数のセルのなかに該当があればオートシェイプを表示)

Excelのオートシェイプ表示方法

このQ&Aのポイント
  • Excelでセルの該当箇所にオートシェイプを表示する方法について教えてください。
  • セルA1に1を入力した場合、◎で囲みたいです。
  • セルB1からD1に2、4、5を入力した場合、それぞれを○で囲みたいです。

質問者が選んだベストアンサー

  • ベストアンサー
  • watabe007
  • ベストアンサー率62% (476/760)
回答No.3

>ElseIf .Address(0, 0) = "B1" Then >のところが、「B1かC1かD1かE1の場合」 >といった感じにはできないでしょうか? ElseIf Not Intersect(.Cells, Range("B1:D1")) Is Nothing Then もしくは ElseIf .Address(0, 0) = "B1" Or .Address(0, 0) = "C1" Or .Address(0, 0) = "D1" Then でお試し下さい。

masunona
質問者

お礼

ありがとうございます! 両方ためしてみたんですけど、 B1に数字が入った時しか正常にオートシェイプが表示非表示されませんでした・・・。 (それ以外のセルにはどの数字を入れても非表示のままです。) すみませんがまた時間ありましたら教えてください。お願いいたします!

その他の回答 (3)

  • watabe007
  • ベストアンサー率62% (476/760)
回答No.4

    '変化のあったセルはB1,C1,D1の何れか     ElseIf Not Intersect(.Cells, Range("B1:D1")) Is Nothing Then       '2か4か5の何れかの値が入力された場合       If .Value = 2 Or .Value = 4 Or .Value = 5 Then         '該当するオートシェイプを表示         ActiveSheet.Shapes("該当する○").Visible = True       Else         '以外なら該当するオートシェイプを非表示         ActiveSheet.Shapes("該当する○").Visible = False       End If     End If

masunona
質問者

お礼

何度もありがとうございます! ElseIf Not Intersect(.Cells, Range("B1:D1")) Is Nothing Then やはりこの部分がうまくいきません。 B1:D1 となっていますが、 B1に2と入力すると2に○がつきますが C1、D1に2と入力しても○がつきません。 また何かお気づきの点ありましたら教えてください。 お願いいたします!

masunona
質問者

補足

すみませんでした! 私の勘違いで、 ElseIf Not Intersect(.Cells, Range("B1:D1")) Is Nothing Then としたら理想の動きが出来ました! ただ、B1に1と入れると1を囲む○が表示され、 C1に2と入れると2を囲む○が表示されるんですが 1を囲む○が表示されなくなってしまいます・・・。 色々うまくいかないので 作り方を変えてみることにしました。 そしてそっちもうまくいかないのでまた質問させていただきたいと思っています。 色々教えていただき大変ありがとうございました!

  • watabe007
  • ベストアンサー率62% (476/760)
回答No.2

>B1に2、 >C1に4、 >D1に5 >のように、1セルにつき1つの数字を入力したいです。     '値が変化したセルがB1で     ElseIf .Address(0, 0) = "B1" Then        '値が2なら        If .Value = "2" Then         '該当するオートシェイプを表示         ActiveSheet.Shapes("該当する○").Visible = True       Else        '値が2以外なら該当するオートシェイプを非表示         ActiveSheet.Shapes("該当する○").Visible = False       End If     '値が変化したセルがC1で     ElseIf .Address(0, 0) = "C1" Then        '値が4なら        If .Value = "4" Then         ActiveSheet.Shapes("該当する○").Visible = True       Else         ActiveSheet.Shapes("該当する○").Visible = False       End If     ElseIf .Address(0, 0) = "D1" Then        If .Value = "5" Then         ActiveSheet.Shapes("該当する○").Visible = True >B1に2、 >C1に4、 >D1に5 もしくは、B1~D1のセルに2又は4又は5が入力された場合?    If .Value = "2" or .Value = "4" or .Value = "5" Then  

masunona
質問者

お礼

ありがとうございます!!早速やってみたところうまくいきました! ただ、欲を言えば ElseIf .Address(0, 0) = "B1" Then のところが、「B1かC1かD1かE1の場合」 といった感じにはできないでしょうか? "B1" or "C1" or ・・・Then とやってみたのですが 「型が一致しません」と出てしまってだめでした。 これができるとかなりコードを短くできます。 またお時間ありましたら教えてください。 お願いいたします!

  • watabe007
  • ベストアンサー率62% (476/760)
回答No.1

>セルB1からD1に2 4 5と入力したら2 4 5を○で囲みたいです。 新たに、2、3、4 を囲む○を設けてください。 Private Sub Worksheet_Change(ByVal Target As Range)   With Target     If .Address(0, 0) = "A1" Then       If .Value = "1" Then         ActiveSheet.Shapes("1を囲む内側の○").Visible = True         ActiveSheet.Shapes("1を囲む内側の○").Visible = True       Else         ActiveSheet.Shapes("1を囲む内側の○").Visible = False         ActiveSheet.Shapes("1を囲む内側の○").Visible = False       End If     ElseIf .Address(0, 0) = "B1" Then        If .Value = "245" Then         ActiveSheet.Shapes("2を囲む○").Visible = True       Else         ActiveSheet.Shapes("2を囲む○").Visible = False       End If     ElseIf .Address(0, 0) = "C1" Then        If .Value = "245" Then         ActiveSheet.Shapes("3を囲む○").Visible = True       Else         ActiveSheet.Shapes("3を囲む○").Visible = False       End If     ElseIf .Address(0, 0) = "D1" Then        If .Value = "245" Then         ActiveSheet.Shapes("4を囲む○").Visible = True        Else         ActiveSheet.Shapes("4を囲む○").Visible = False       End If     End If   End With End Sub

masunona
質問者

お礼

早速のご回答ありがとうございます! 私の書き方が悪くて申し訳ありません。 ○をつける項目については、 B1に2、 C1に4、 D1に5 のように、1セルにつき1つの数字を入力したいです。 質問には省略して書きましたが 項目は全部で13、○をつける項目の数は都度違います。 どうしやらよいのやら。 またお時間ありましたら教えてください。 お願いいたします!