- ベストアンサー
Excelのオートシェイプ表示方法
- Excelでセルの該当箇所にオートシェイプを表示する方法について教えてください。
- セルA1に1を入力した場合、◎で囲みたいです。
- セルB1からD1に2、4、5を入力した場合、それぞれを○で囲みたいです。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
>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 でお試し下さい。
その他の回答 (3)
- watabe007
- ベストアンサー率62% (476/760)
'変化のあったセルは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
お礼
何度もありがとうございます! ElseIf Not Intersect(.Cells, Range("B1:D1")) Is Nothing Then やはりこの部分がうまくいきません。 B1:D1 となっていますが、 B1に2と入力すると2に○がつきますが C1、D1に2と入力しても○がつきません。 また何かお気づきの点ありましたら教えてください。 お願いいたします!
補足
すみませんでした! 私の勘違いで、 ElseIf Not Intersect(.Cells, Range("B1:D1")) Is Nothing Then としたら理想の動きが出来ました! ただ、B1に1と入れると1を囲む○が表示され、 C1に2と入れると2を囲む○が表示されるんですが 1を囲む○が表示されなくなってしまいます・・・。 色々うまくいかないので 作り方を変えてみることにしました。 そしてそっちもうまくいかないのでまた質問させていただきたいと思っています。 色々教えていただき大変ありがとうございました!
- watabe007
- ベストアンサー率62% (476/760)
>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
お礼
ありがとうございます!!早速やってみたところうまくいきました! ただ、欲を言えば ElseIf .Address(0, 0) = "B1" Then のところが、「B1かC1かD1かE1の場合」 といった感じにはできないでしょうか? "B1" or "C1" or ・・・Then とやってみたのですが 「型が一致しません」と出てしまってだめでした。 これができるとかなりコードを短くできます。 またお時間ありましたら教えてください。 お願いいたします!
- watabe007
- ベストアンサー率62% (476/760)
>セル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
お礼
早速のご回答ありがとうございます! 私の書き方が悪くて申し訳ありません。 ○をつける項目については、 B1に2、 C1に4、 D1に5 のように、1セルにつき1つの数字を入力したいです。 質問には省略して書きましたが 項目は全部で13、○をつける項目の数は都度違います。 どうしやらよいのやら。 またお時間ありましたら教えてください。 お願いいたします!
お礼
ありがとうございます! 両方ためしてみたんですけど、 B1に数字が入った時しか正常にオートシェイプが表示非表示されませんでした・・・。 (それ以外のセルにはどの数字を入れても非表示のままです。) すみませんがまた時間ありましたら教えてください。お願いいたします!