VBAで時間を条件で判断し、オートシェイプを色づける方法

このQ&Aのポイント
  • VBA初心者の方が、時間を条件で判断してオートシェイプを色づけるプログラムを作成したいとのことです。具体的には、セルから時間を取得し、値に基づいてオートシェイプを赤、青、黄の信号で表す方法を知りたいそうです。
  • 質問者は、25行のデータがあり、それぞれに時間が入力されています。この時間を条件で判断し、オートシェイプに色を付けたいと考えています。
  • 条件1では、0から50分未満の場合は青、50分から60分未満の場合は黄、60分以上の場合は赤に色を付けたいそうです。条件2では、0から150分未満の場合は青、150分以上180分未満の場合は黄、180分以上の場合は赤に色を付けたいとのことです。
回答を見る
  • ベストアンサー

「VBA」オートシェイプを条件で判断し、色づけ

お世話になります。 VBA初心者です。かなり困っておりましてWeb上を調べ回りましたがどうしてもわからずご教授いただきたく、お願い致します。 仕様 時間をセルから取得し、その時間を条件で判断しFor文で回しオートシェイプを赤、青、黄の信号で表すというプログラムです。 値が入ってる行は25行で、それぞれ対応するセル(時間が入っている)から値を取得し、条件で判断し、オートシェイプ(デフォルトは白塗りで隠してある)に色付け。 項目がそれぞれ ・時間1 ・時間2 ・条件1 ・条件2 があり 時間1は条件1で判断、オートシェイプ1~25を色づけ 時間2は条件2で判断、オートシェイプ1~25を色づけ 。 条件1: ・0から50分未満…青 ・50分から60分未満…黄 ・60分以上…赤 条件2: ・0から150分未満…青 ・150分以上180分未満…黄 ・180分以上…赤 わかりづらい説明で大変申し訳ありません。 丸投げ状態で恐縮ですがよろしくお願い致します。。

質問者が選んだベストアンサー

  • ベストアンサー
  • rukuku
  • ベストアンサー率42% (401/933)
回答No.1

はじめまして オートシェープの色を変えるサンプルプログラムです。 Sub Macro1() ' ' Macro1 Macro ' マクロ記録日 : 2009/2/3 ユーザー名 : rukuku ' ' ActiveSheet.Shapes("Oval 1").Select Selection.ShapeRange.Fill.ForeColor.SchemeColor = 10 Selection.ShapeRange.Fill.Visible = msoTrue Selection.ShapeRange.Fill.Solid End Sub 「マクロの記録」を使っただけなので、ちょっと効率の悪い書き方ですが、ちゃんと動きます。 最初はこのまま、もう少し分かってきたら改良して使ってください。 「マクロの記録」は、いいサンプルプログラムになるので、重宝しています。 >時間1は条件1で判断、オートシェイプ1~25を色づけ >時間2は条件2で判断、オートシェイプ1~25を色づけ こちらは 「If then」で書いてもいいのですが、「Select Case」の方が記述が簡単です。 Select Case 時間1 Case Is >= 60 signal(1) = 10 Case Is >= 50 signal(1) = 13 Case Is < 50 signal(1) = 12 End Select と変数「signal(1)」に色を代入しておいてから、 Selection.ShapeRange.Fill.ForeColor.SchemeColor = signal(1) と、色の変更を実施します。

その他の回答 (2)

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.3

#2です。 >値が入ってる行は25行で >オートシェイプ1~25を色づけ と言う事は、オートシェイプ25個は25行のデータそれぞれで個別に色をつけると 言う事になるのでしょうから、#2の場合データの行数とオートシェイプ25個の 名前(No)順が合わないと使えないかもです。 2行目のデータ  オートシェイプ 1 3行目のデータ  オートシェイプ 3 4行目のデータ  オートシェイプ 4 とかの場合です。 その時はスル~して下さい。

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.2

参考までですが。 Sub try() Dim sh As Excel.Shape For Each sh In ActiveSheet.Shapes Debug.Print sh.Name, "オートシェイプNo." & Split(sh.Name, " ")(1) Next End Sub オートシェイプの番号で必要なセル番地から値を取得し、色の条件判断をして 色の変更をしてみては如何でしょう。

関連するQ&A

  • オートシェイプの○に条件付きで色付けできますか??

    Sheet1の複数のセルには日付が入っています。 これらには、条件付き書式で色付けするよう設定しています。 ・過ぎると赤   ・残り半年で黄   ・その他、青 この色付けを別のSheet2に作ったオートシェイプの楕円に同じように色付けしたいんです・・・・。 連動して色付けすることは可能でしょうか?? 実際は100箇所以上あります。 どなたかできるかたよろしくお願いします!! 2003エクセルです。

  • Excel条件付で偶数・奇数を判断するには?

    Excel上でセルの値が偶数か奇数かにより色つけをしたく 条件付書式の機能を調べていたのですが 偶数行、奇数行を色付けするには、という例は見つかるのですが セルの値を偶数か奇数かを判断し色付けする という方法が見つかりませんでした。 セル行列数を判断するのではなく、セル値を判断する方法はどうしたらよいのでしょうか。 例 1,3,4,6,7,99,115,11… 2,4,6,8,65,78,… と書かれたシートで偶数は赤文字、奇数は青文字にするには?

  • Excelでオートシェイプを条件によって貼り付けることは可能でしょうか?

    Excelであるセルに入力した値に条件をつけて、その条件によって特定のセルにオートシェイプ(楕円など)を貼り付けることは可能でしょうか? アドバイスよろしくお願いします。

  • 行の色付けについて

    エクセルのセルの色付けについての質問です。行で色付けをしたいのですが、1行目は赤色、2行目は黄色、3行目は青色・・・あとは同じ繰り返しにしたい場合はどのように設定すればよいでしょうか?よろしくお願いします。

  • Excel2002でオートシェイプの数の拾い出し

    こんにちは。 Excel2002です。 ワークシート内に、以下のオートシェイプを配置します。 (1)基本図形:丸。色を赤に設定 (2)     〃     青に設定 (3)     〃    黄色に設定 各色、ランダムに多数配置。 このオートシェイプの、それぞれの個数を数えて セルにその個数を記入させたいのですが、 そのような事は可能ですか? また、どうやるか教えて頂きたいのですが・・・ 宜しくお願い致します。

  • エクセルVBA 条件にあうときセルを塗りつぶすには?

    エクセルVBA 条件にあうときセルを塗りつぶすには? エクセルVBAについて教えてください。 _________A 列 _________B 列_________C列_________D列 -------------------------------------------- 1行| 基準値_________ 5_____________1____________8 2行| りんご____________1_____________9____________0 3行| みかん___________12___________5____________3 4行| ぶどう____________15___________7____________8 5行| バナナ____________3_____________1____________4 上図のようにデータがあります。 (実物は列行共に膨大です。また条件を4つ以上つける予定なので条件付書式は使えません) 各列の基準値に対して、セルの増減が、0以下のときに黄色に、5から8のとき大きくなるときに赤、9以上のときに青にセルの色を塗りつぶしたいです。 どのようにすればよいでしょうか? B列の場合、基準値が5です。 B2のセルの場合、基準値5と1(B2セル)の増減は-4です。 増減が0以下のときは黄色に、増減が5から8のときは赤に、増減が9以上のときに青にするので、このときは黄色に塗りつぶします。 B3のセルの場合、基準値5と12(B3セル)の増減は7です。 増減が5から8のとき赤に塗りつぶすので、このセルは赤に塗りつぶします。 B4のセルの場合、基準値5と15(B4セル)の増減は10です。 増減が9以上のとき青色に塗りつぶすので、このセルは青色に塗りつぶします。 C2のセルの場合は、C列の基準値は1(C1セル)です。 基準値1と9(C2のセル)の増減は8です。 増減が5から8のとき赤に塗りつぶすので、このセルは赤に塗りつぶします。 よろしくお願いいたします。

  • Excelの条件付き書式を行に適用するには

    Excelで条件付き書式ってありますよね。 あの機能を使って セルの値が○○に等しいとき セルの色を設定することはできますが,その行すべてを色を変えるというのはできませんか? 例えばA1セルの値が1なら 1行は赤色。A7セルの値も1なら7行も赤色。 A3セルの値が5なら 3行は青色。 A9セルの値も5なら 9行も青色。 というようにしたいのですが・・・ また, もう一つ質問ですが この条件付き書式は 条件が3つまでしかできませんよね。 例えば 上の条件に付け加えて さらに A10セルの値が4なら 10行は黄色と設定したとすると それ以上できないですよね つまりA11行セルの値が9なら 11行は 緑色としたい場合は どうすればいいでしょうか?

  • エクセルVBAオートシェイプがあったら、の書き方

    皆さんこんにちは。 エクセルVBAの初心者です。 IFを使った条件分岐が私には難しかったので SELECTCASEを用いてみようと思うのですが条件の書き方が分かりません。 やりたい事は セルA1が「文字が入っていない且つオートシェイプが入っていない場合」のみ アクション(オートシェイプ☆を貼る)を起こしたい、です。 イメージ的にこうなるかな?と思いコードを作成しましたが ケース2の「オートシェイプがあったら」という条件の書き方が分かりません。 Sub オートシェイプ貼り付け()   With ThisWorkbook.Worksheets("Sheet1")   Select Case True     Case .Range("A1").Value <> ""     Exit Sub     Case オートシェイプがあったら     Exit Sub     Case Else       オートシェイプ☆を貼る   End Select End Sub オートシェイプの有無を条件にするにはどのような書き方をすれば良いでしょうか?

  • エクセルVBAでの複数のオートシェイプの色塗り方法

    ネットから下記のコードを見つけたのですが、1つのシートに複数のオートシェイプの色塗りを変更する方法を教えてください。 例えばセル"A1"には数値の1と"A2"には数値2を入力したら、 オートシェイプAにはセル"A1"に対応した色塗り『赤色』を オートシェイプBにはセル"A2"に対応した色塗り『黄色』といった感じです。 下記のコードをいくつも繋げれば、複数のオートシェイプの色塗りが出来ると思ったのですが、コードを繋げる方法がわかりません。その他に何か良い方法がありましたら教えてください。 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address(0, 0) <> "A1" Then Exit Sub With ActiveSheet.Shapes("ABC").Fill.ForeColor Select Case Target.Value Case Is = "赤" .SchemeColor = 2 Case Is = "黄" .SchemeColor = 5 Case Is = "緑" .SchemeColor = 3 Case Is = "青" .SchemeColor = 4 Case Else .SchemeColor = 1 End Select End With End Sub

  • エクセルで行が飛んだセルを一度に条件付書式(複数条件で色付けする)方法

    エクセルで行が飛んだセルを一度に条件付書式(複数条件で色付けする)方法 以下の表があるとします。b、d、f、h、jが、3以下を青&6以上を赤にセルを色付けする条件書式でセル毎に設定する以外で、一度に出来る方法を教えて下さい。行が膨大にある表があり、一つ一つセルをクリックして設定するには、間違いや労力もかかります。ご教授頂きたく、お願い致します。 a 1 b 5 c 2 d 9 e 8 f 2 g 1 h 5 i 4 j 3

専門家に質問してみよう