次のクエリに基づくデータシート フォームがあります。これは、ピボットされた複数のデータ セットを組み合わせて、日付ごとに列を指定します。
+-------------+------------------+----------+----------+-----------+
| statusType | valueType | 8/1/2013 | 9/1/2013 | 10/1/2013 |
+-------------+------------------+----------+----------+-----------+
| design | actual | 3 | 6 | 7 |
| design | target | 4 | 5 | 4 |
| design | cumulativeActual | 60 | 66 | 67 |
| design | cumulativeTarget | 50 | 55 | 54 |
| development | actual | 10 | 12 | 2 |
| development | target | 10 | 8 | 8 |
| development | cumulativeActual | 30 | 42 | 44 |
| development | cumulativeTarget | 40 | 48 | 56 |
+-------------+------------------+----------+----------+-----------+ ...
各日付列の「実際の」値に条件付き書式を設定して、次のように各値に色が設定されるようにします。
- 実際 >= ターゲット: 緑
- 実際 = 目標の 51 ~ 99%: 青
- 実際のターゲットの 50% 未満: 赤
したがって、たとえば、8/1 の「設計の実際の」値は青になり、9/1 と 10/1 の「開発の実際の」値はそれぞれ緑と赤になります。
次のように条件付き書式を設定して、日付コントロールを反復処理できます。
Private Sub Form_Load()
Dim ctrl As Control
Dim tb As TextBox
For Each ctrl In Me.Controls
If IsDate(ctrl.Name) Then
Set tb = ctrl
tb.FormatConditions.Add 'not sure what to put here
End If
Next
End Sub
FormatConditions.Add
ここの引数に何を入れる必要があるのか わかりません。指定されたstatusType
/ actual
/date 値について、対応するstatusType
/ target
/date 値を取得して、フォーマットを設定するためにそれらを比較するにはどうすればよいですか?
このフォームは読み取り専用であるため、条件付きである必要はないことに注意してください。フォームが読み込まれるたびに、上記のルールに従って値に静的な色を割り当てることができます。
追加の説明: 基本的に、私がしようとしているのは、別の行の同じ列の値と比較する方法に応じて、ある行の色の値です。たとえば、「2013 年 8 月 1 日」列の場合、「設計|実際の」値 3 と「設計|目標」の値 4 を比較して、「設計|実際の」値が何色であるべきかを判断します。