チョコミントアイス

エクセルの値と入力すると、図形の色を変えたいのですが、何か良い方法はないでしょうか。

例えば、地図があるとします。その地図の中にある病院の場所に図形で四角を書きます。
(書いた図形の塗りつぶしはなしがいいですが、線の色はあっても問題ありません。)

エクセルの値を4月と入力すると、図形の色が黄色。
7月と入力すると、色が水色・・・と言うようにエクセルの値を元に図形の色を変えたいです。

お手数をおかけしますが、どなたかわかる方教えてください。
ちなみに、私はVBAなどのプログラムに関しては素人です。

宜しくお願い致します。

質問者からの補足コメント

  • 補足ですが、図形の四角は複数あり、色はバラバラに設定を行いたく。
    添付ファイルのように、

    例えば、添付ファイルのようにC3に日にちが入ったら、Aの図形の色が変わり、E3に日にちが入ったら、今度は灰色になる、と言うように行いたいです。

    また形状もフリーで書いた図形も色を変えたいのですが、可能でしょうか。

    お手数をおかけしますが、よろしくお願いいたします。

    「エクセルの値を元に図形の色を変えたい」の補足画像1
      補足日時:2022/05/11 09:41

A 回答 (2件)

こんにちは



すでに適切な回答がありますが・・
>私はVBAなどのプログラムに関しては素人です。
という方にとっては、ハードルは高いと思われます。


ちなみに、以下の条件であれば後述のような感じで可能と思います。
・表は補足にご提示の図の通りとする
・図は「挿入」-「図」-「図形」で描いた図形で、図中のテキストは
 表のA列のセルの文字と完全一致している
※ 色名はプログラムでは使えないので変換が必要ですが、表にご提示の色だけ定義してあります。

不明な詳細に関しては適当ですが、対象シートのシートタブを右クリックして出る「コードの表示」のエディタ画面に以下を全てコピペ。
(条件と異なる設定下では、コピペしても何も起きません)

Private Sub Worksheet_Change(ByVal Target As Range)
Dim sp As Shape, col
Dim a As Range, r As Range, c As Range
Const cellArea = "C3:C5,E3:E5"

For Each a In Range(cellArea).areas
Set r = Intersect(a, Target)
If Not r Is Nothing Then
For Each c In r
If c.Value <> "" And (c.Column = 5 Or c.Offset(, 2) = "") Then
Set sp = shapeSearcher(Cells(c.Row, 1).Text)
col = name2color(c.Offset(, 1).Text)
If Not sp Is Nothing And Not IsError(col) Then sp.Fill.ForeColor.RGB = col
End If
Next c
End If
Next a
End Sub


Function name2color(ByRef c As String)
Dim names, colors, i As Long
names = Array("黄色", "緑", "水色", "灰色", "青", "ピンク")
colors = Array(vbYellow, vbGreen, rgbAqua, rgbGray, vbBlue, rgbPink)
name2color = CVErr(xlErrName)
For i = LBound(names) To UBound(names)
If names(i) = c Then name2color = colors(i): Exit For
Next i
End Function


Function shapeSearcher(ByRef str As String)
Dim sp As Shape, s As String
Set shapeSearcher = Nothing
For Each sp In ActiveSheet.Shapes
s = sp.TextFrame2.TextRange.Text
s = Trim(Replace(Replace(s, vbTab, ""), vbLf, ""))
If str = s Then Set shapeSearcher = sp: Exit For
Next sp
End Function
    • good
    • 1

こんにちは


>エクセルの値と ≪入力すると》、図形の色を変えたいのですが、何か良い方法はないでしょうか
ご存知のようですが、VBAでの処理で可能です

>例えば、地図があるとします。その地図の中にある病院の場所に図形で四角を書きます。(書いた図形の塗りつぶしはなしがいいですが、線の色はあっても問題ありません。)
手作業の範疇ではないでしょうか?

>私はVBAなどのプログラムに関しては素人です。
どの位素人なのか分かりませんが、基本的な事が理解できていなければ
急いでは到底無理で、時間をかけても難しいでしょう。
先ずは、ExcelとVBAを学習する必要があります。
(もちろんユーザーとして使うことは出来るかもしれませんが、条件の変更が生じた場合などに対応できない事になります)

VBAコードを書く場所など、導入方法は分かりますか?

>形状もフリーで書いた図形も色を変えたいのですが、可能でしょうか。
勿論可能です。

Excelのスキルになりますが、各図形のオブジェクト名をA,B,Cに変更できますか?

>エクセルの値を4月と入力すると、図形の色が黄色。7月と入力すると、色が水色・・・と言うよう
違う値の時どうする(何色な)の?

もし、VBAで処理しないのなら、同じ(色違い)図形を重ねて表示する方法もありかも知れません。
http://yasu-excel.blogspot.com/2014/07/blog-post …
https://www.y-shinno.com/excel-img-switch/
    • good
    • 2
この回答へのお礼

回答ありがとうございました。
VBAを使わない処理もありだと思いました。
色々試してみます。

お礼日時:2022/05/19 13:31

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報