プロが教えるわが家の防犯対策術!

こんにちは。
Excel2002です。

ワークシート内に、以下のオートシェイプを配置します。
(1)基本図形:丸。色を赤に設定
(2)     〃     青に設定
(3)     〃    黄色に設定
各色、ランダムに多数配置。

このオートシェイプの、それぞれの個数を数えて
セルにその個数を記入させたいのですが、
そのような事は可能ですか?
また、どうやるか教えて頂きたいのですが・・・

宜しくお願い致します。

A 回答 (2件)

#01です。


#VALUE!エラーですか? 色の問題ではないと思います。該当する色のシェイプが全くない場合は結果が0になり、#VALUE!エラーにならないのですが…

ユーザ関数を入力したセルを選択してF2で編集モードにして、Enterを押下したら正しく計算されませんか?

色番号はパレットの変更をしているとPC毎に変わる可能性があるので、「ツール」→「マクロ」→「新しいマクロの記録」→「シートのシェイプの色を塗る」→「ツール」→「マクロ」→「マクロ記録の停止」を実行し、ALT+F11でVBE画面を開き「標準モジュール」に書かれた番号を見のが一番確実な方法です。
    • good
    • 0
この回答へのお礼

解決しました!!
マクロまで作って頂き、ありがとうございました!

お礼日時:2007/03/19 10:07

シート上の指定された色のオートシェイプ(丸)を数えるユーザ定義関数を作りました。


 =CountOval(13)
のように使用します。( )内の数字は色を示す数値です。黄色:13、青:12、赤:10です。

マクロはALT+F11でVBE画面を開き、左上のVBA Projectでシート名を右クリックし「挿入」→「標準モジュール」で表示される画面に貼り付けて下さい

Private Function CountOval(clr As Integer) As Integer
Dim shp As Shape
 For Each shp In ActiveSheet.Shapes
  If shp.AutoShapeType = msoShapeOval And _
    shp.Fill.ForeColor.SchemeColor = clr Then
   CountOval = CountOval + 1
  End If
 Next shp
End Function

もし丸以外のシェイプも一緒に数えたいなら
  If shp.AutoShapeType = msoShapeOval And _
    shp.Fill.ForeColor.SchemeColor = clr Then

  If shp.Fill.ForeColor.SchemeColor = clr Then
にしてください。

この回答への補足

すみません。
作っていただいたこのマクロを、おっしゃるとおりに
VBE画面右側に出てきたウィンドウに貼り付け、
ワークシート画面に戻ってセルに『=countoval(13)』と入力したところ、『#VALUE!』と表示されてしまいました。
私の作ったオートシェイプの色と合っていないのでしょうか??

この色番号は、どこを見れば分かりますか?
お手数をお掛けしてしまい大変申し訳ございません・・

補足日時:2007/03/15 10:16
    • good
    • 0

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