• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:「VBA」オートシェイプを条件で判断し、色づけ)

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

このQ&Aのポイント
  • VBA初心者の方が、時間を条件で判断してオートシェイプを色づけるプログラムを作成したいとのことです。具体的には、セルから時間を取得し、値に基づいてオートシェイプを赤、青、黄の信号で表す方法を知りたいそうです。
  • 質問者は、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