- ベストアンサー
Excel2002でオートシェイプの数の拾い出し
こんにちは。 Excel2002です。 ワークシート内に、以下のオートシェイプを配置します。 (1)基本図形:丸。色を赤に設定 (2) 〃 青に設定 (3) 〃 黄色に設定 各色、ランダムに多数配置。 このオートシェイプの、それぞれの個数を数えて セルにその個数を記入させたいのですが、 そのような事は可能ですか? また、どうやるか教えて頂きたいのですが・・・ 宜しくお願い致します。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
シート上の指定された色のオートシェイプ(丸)を数えるユーザ定義関数を作りました。 =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 にしてください。
その他の回答 (1)
- zap35
- ベストアンサー率44% (1383/3079)
#01です。 #VALUE!エラーですか? 色の問題ではないと思います。該当する色のシェイプが全くない場合は結果が0になり、#VALUE!エラーにならないのですが… ユーザ関数を入力したセルを選択してF2で編集モードにして、Enterを押下したら正しく計算されませんか? 色番号はパレットの変更をしているとPC毎に変わる可能性があるので、「ツール」→「マクロ」→「新しいマクロの記録」→「シートのシェイプの色を塗る」→「ツール」→「マクロ」→「マクロ記録の停止」を実行し、ALT+F11でVBE画面を開き「標準モジュール」に書かれた番号を見のが一番確実な方法です。
お礼
解決しました!! マクロまで作って頂き、ありがとうございました!
補足
すみません。 作っていただいたこのマクロを、おっしゃるとおりに VBE画面右側に出てきたウィンドウに貼り付け、 ワークシート画面に戻ってセルに『=countoval(13)』と入力したところ、『#VALUE!』と表示されてしまいました。 私の作ったオートシェイプの色と合っていないのでしょうか?? この色番号は、どこを見れば分かりますか? お手数をお掛けしてしまい大変申し訳ございません・・