
エクセルに2つのシートがあります。シート1には15営業所の年度別販売個数があります。シート2には、自分で作成した地図があり、15営業所の位置をオートシェイプで作成した●(丸)で地図内に表示しています。
次にシート1において対前年度比率を営業所別に求めました。(例 S営業所 対前年度106%の販売増)
この対前年度比率に応じて、シート2のオートシェイプの色は、変えられるのでしょうか?
具体的には、対前年度100%~105%はオレンジ、106%~110%は赤・・・というようにしたいのです。
数値に応じてセルの色を変える方法は分かるのですが、指定したオートシェイプの色は変えられるのでしょうか?
関数、VBAでの解決方法を是非教えてください。よろしくお願いします。
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
まず、各営業所をあらわす図形の名称を調べます。
方法は、
1.ツール→マクロ→新しいマクロの記録を選択すると「マクロの記録」の子画面が出ます。
2.マクロ名を覚えておきます。OKボタンを押します。ここでは、Macro1だったとします。
3.各営業所をあらわす図形を順に1個ずつマウスでクリックし選択していきます。
4.すべて選択し終わったら、ツール→マクロ→記録終了を選びます。
5.ツール→マクロ→Visial Basic Editorを選択します。
6.エディタ画面が開きます。プロジェクトとタイトルのついた画面の標準モジュールを選択すると中に先ほどのMacro1というものができているはずです。
こんな感じで…
Sub Macro1()
'
' Macro1 Macro
' マクロ記録日 : 2006/1/28 ユーザー名 :
'
'
ActiveSheet.Shapes("Oval 1").Select
ActiveSheet.Shapes("Oval 4").Select
ActiveSheet.Shapes("Oval 5").Select
・
・
End Sub
この「Oval 1」,「Oval 4」というのがExcelが図形につけた名称です。
次にプログラムですが、地図のシートを選択したときに、前年比の値で丸の色変えを行えばいいので、地図のシート、Sheet2でしょうか?このシート内のActivateイベントプロシージャにコーディングします。
内容は、…
Private Sub Worksheet_Activate()
Dim Henkan(1 To 15) As EIGYOUTOZUKEI
Dim EigyoSheetName As String
Dim ZennenhiKeta As Integer
Dim EigyouNmKeta As Integer
Dim W_Zennenhi As Variant
Dim i As Integer
EigyoSheetName = "Sheet1"
ZennenhiKeta = 4
EigyouNmKeta = 1
'営業所に対応する図形の名称の定義、本当は15個分必要
Henkan(1).Gyo = 2
Henkan(1).ZukeiName = "Oval 1"
Henkan(2).Gyo = 3
Henkan(2).ZukeiName = "Oval 4"
Henkan(3).Gyo = 4
Henkan(3).ZukeiName = "Oval 5"
For i = 1 To 15
W_Zennenhi = Worksheets(EigyoSheetName).Cells(Henkan(i).Gyo, ZennenhiKeta).Value
If (IsNull(W_Zennenhi) Or IsEmpty(W_Zennenhi) Or Not (IsNumeric(W_Zennenhi))) Then
MsgBox (Worksheets(EigyoSheetName).Cells(Henkan(i).Gyo, EigyouNmKeta).Value & "の前年比が、無効な値です")
Else
If (W_Zennenhi > 1# And W_Zennenhi <= 1.05) Then
Shapes(Henkan(i).ZukeiName).Fill.ForeColor.SchemeColor = 51 '橙
ElseIf (W_Zennenhi > 1.05 And W_Zennenhi <= 1.1) Then
Shapes(Henkan(i).ZukeiName).Fill.ForeColor.SchemeColor = 10 '赤
ElseIf (W_Zennenhi > 1.1 And W_Zennenhi <= 1.15) Then
Shapes(Henkan(i).ZukeiName).Fill.ForeColor.SchemeColor = 13 '黄色
ElseIf (W_Zennenhi > 1.15) Then
Shapes(Henkan(i).ZukeiName).Fill.ForeColor.SchemeColor = 11 '黄緑
Else
Shapes(Henkan(i).ZukeiName).Fill.ForeColor.SchemeColor = 9 '白
End If
End If
Next i
End Sub
Private Sub Worksheet_Activate()の外側のGeneralに型の定義等をします。
内容は、…
Option Base 1
Option Explicit
Private Type EIGYOUTOZUKEI
Gyo As Integer ' 営業所のシート上の行番号
ZukeiName As String ' 各営業所を表す丸の名称
End Type
プログラムの内、以下の箇所は、前年比のあるシートの内容で、変更してください。
1.前年比のあるシートの名称、ここではSheet1としています
EigyoSheetName = "Sheet1"
2.前年比の入っているセルの桁番号です。Aが1です。ここではD、4番目としています。
ZennenhiKeta = 4
3.営業所名のある桁番号です。ここではA、1番目としています。
EigyouNmKeta = 1
4.最初に調べた営業所を表す図形の名称とその営業所の行番号です。ここでは、最初の行の営業所は、2行目で、それを表す図形名はOval 1としています。また、本来15個定義しなければなりませんが、ここでは、3個分となっています(あくまで参考例なので)。
Henkan(1).Gyo = 2
Henkan(1).ZukeiName = "Oval 1"
Henkan(2).Gyo = 3
Henkan(2).ZukeiName = "Oval 4"
Henkan(3).Gyo = 4
Henkan(3).ZukeiName = "Oval 5"
こんなものではだめでしょうか(コーディングの字下げが上手く表示されないため見にくくて申し訳ありません、なぜでしょう?)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
コマンドボタンがデザインモー...
-
VBA シート名を先月の名前に...
-
エクセルで回数をカウントする...
-
【マクロ】【相談】Excelブック...
-
シートを保護した時でも並べ替...
-
ExcelのSheetに作られたMacro1...
-
エクセルのチェックボックス
-
複数シートの保護・解除
-
Excelのマクロの呼び出し元を知...
-
EXCELのエラー
-
エクセルでシートの並び替えで...
-
マクロ 各シートの決められた位...
-
Excel VBAでオートメーションエ...
-
エクセルの関数 ENTERを押...
-
【ExcelVBA】マクロの入ったシ...
-
ハイパーリンクでジャンプした...
-
エクセルの選択範囲以外を削除...
-
エクセルファイルのシート毎の容量
-
1ヶ月分の日付を一度に出す方法...
-
excelの不要な行の削除ができな...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
コマンドボタンがデザインモー...
-
エクセルのVBAで集計をしたい
-
【 Excel】シートの見出しに自...
-
【マクロ】【相談】Excelブック...
-
エクセルを開いたとき常に同じ...
-
マクロを複数シートに実行する...
-
EXCELのエラー
-
Excelのマクロの呼び出し元を知...
-
VBAで条件によってシート見出し...
-
マクロを特定の複数シートで実...
-
VBA シート名を先月の名前に...
-
EXCELでマクロを使わずに図形の...
-
エクセルのチェックボックス
-
エクセルでシートの並び替えで...
-
エクセルの複数のワークシート...
-
EXCELでワークシートを開いたら...
-
エクセルで複数のSheetを一括フ...
-
エクセルで、マクロボタンの表...
-
ExcelのSheetに作られたMacro1...
-
エクセル・複数のシートを一度...
おすすめ情報