VBA Excel自动颜色和值的变化

时间:2014-02-20 12:18:12

标签: excel vba excel-vba

我正在尝试设置个人管理电子表格以供工作。我有一个不同优先级的任务列表。

我在这里要做的是,如果任务数量*优先级达到某个阈值,则可用性单元格的颜色会发生变化,并且描述单元格值会发生变化,例如“忙碌”

这是我到目前为止的代码,当我更改任务列表的值时,如何实现它自动更改

Sub Avail_flag()

TasksRange = ActiveSheet.Range("P3:P6")
availcells = Range("M8,N8")
busyflag = 0
medBusyFlag = 0
highBusyFlag = 0
imedBusyFlag = 0

If Range("p4") > 0 Then
    medBusyFlag = 1
ElseIf Range("p4") > 2 Then
    medBusyFlag = 2
ElseIf Range("p5") > 0 Then
    highBusyFlag = 1
ElseIf Range("p5") > 2 Then
    highBusyFlag = 2
ElseIf Range("p6") > 0 Then
    imedBusyFlag = 1
End If

For Each sell In lRange
    busyflag = (medBusyFlag + (highBusyFlagI * 2) + (imedBusyFlag * 3))

    If busyflag > 0 Then
        For Each cell In Range(availcells)
            cell.Color = green
        Next
        cell("N8").Value = "Occupied"
    ElseIf busyflag > 3 Then
        For Each cell In Range(availcells)
            cell.Color = orange
        Next
        cell("N8").Value = "Busy"
    ElseIf busyflag > 5 Then
        For Each cell In Range(availcells)
            cell.Color = red
        Next
        cell("N8").Value = "Unavailable"
    Else
        For Each cell In Range(availcells)
            cell.Color = white

    End If


End Sub

这里是电子表格的捕获,如果这有帮助,突出显示的灰色部分是所有魔法发生的地方

enter image description here

2 个答案:

答案 0 :(得分:1)

您可以对工作表使用Change事件:

Private Sub Worksheet_Change(ByVal Target As Range)

答案 1 :(得分:0)

我选择了条件格式化,这是我之前没有听说过的。在查找并学习如何使用它之后,它似乎是迄今为止最好的选择。感谢@mehow的usggestion