下面我们就来看看在Excel VBA的程序设置是按期绿色任务的背景颜色,并设置进度滞后的红色任务的背景颜色。

现状:

在Sheet1中,我们有三个任务(X,Y,Z)。 “1”表示任务已经完成。任务是按计划进行,如果“1”存在于每列直至并包括今天的日期。今天,它的6六月。任务X和Y是按计划进行。任务Z是落后于时间表(无细胞“1” E8)。

Tasks on Schedule in Excel VBA

创建工作表更改事件。添加到工作表更改事件代码将被Excel VBA,当你在工作表上更改单元格执行。

1.打开Visual Basic编辑器。

2.双击工作表Sheet1(Sheet1中)在项目资源管理器。

3.从左边的下拉列表中选择工作表。从右侧的下拉列表中选择更改。

Worksheet Change Event in Excel VBA

添加以下代码行的工作表更改事件:

4.声明Integer类型的两个变量。

Dim i As Integer, j As Integer

5.添加一个do while循环。

Do While Cells(6 + i, 1).Value <> ""

i = i + 1

Loop

说明:对于i = 0时,Excel VBA检查任务X,对于i = 1,任务Y,等

Excel中VBA离开do while循环当细胞(6 + 1,1).value的是空的(没有更多的任务,以检查)。

添加以下代码行(在图6,7和8)到do while循环。

6.初始化值0的变量j

j = 0

7.设置任务的背景颜色为绿色假定任务正按计划(这是不一定当然是真的)。

Cells(6 + i, 1).Interior.ColorIndex = 4

8.添加另一个do while循环。

Do While Cells(4, 2 + j).Value <= Date

If Cells(6 + i, 2 + j).Value = 0 Then Cells(6 + i, 1).Interior.ColorIndex = 3

j = j + 1

Loop

注:日期函数返回当天的日期。

说明:对于i = 0,J = 0时,Excel VBA检查细胞B6。对于i = 0,J = 1时,Excel VBA检查电池C6等任务正按计划进行,如果“1”存在于每列直至并包括今天的日期。如果Excel VBA发现一个“0”,它设置任务为红色的背景色。

9.测试程序。例如,表明在6月这个任务Z的已经完成。其结果是,任务ž将自动变成绿色。

Tasks on Schedule Result