VBA - 基于另外两个单元格更改单元格值

时间:2016-02-01 19:31:33

标签: excel vba excel-vba setvalue

我需要这个脚本清空4个单元格,并在满足两个条件时将单元格从Done更改为Pending。

我对VBA仍然缺乏经验,所以对于非常基本和丑陋的代码道歉:P

 If Range("C5").Value Like "Done" And Range("D5").Value = "1" Then
     Range("A5:B5").ClearContents
     If Range("C5").Value Like "Done" And Range("D5").Value = "1" Then
         Range("D5:E5").ClearContents

         If Range("C5").Value Like "Done" And Range("D5").Value = "1" Then
             Range("C5").Value = "Pending"

         End If
     End If
 End If

我不明白为什么C5 Cell在这种情况下不能改变为待定,因为D5 Cell确实自行清除。

可能是因为我对单元格C5使用数据验证吗?它获取名为= TaskState

的列表

TaskState由以下4个选项组成: 有待 进行中 等候接听 完成

非常感谢

1 个答案:

答案 0 :(得分:2)

试试这个:

 If Range("C5").Value Like "Done" And Range("D5").Value = "1" Then
    Range("A5:B5").ClearContents
    Range("D5:E5").ClearContents
    Range("C5").Value = "Pending"

 End If

问题是,一旦清除D列上的内容,它就不再是= 1而第三个If返回false。所以它永远不会触发第三个if声明。

如果他们正在测试相同的东西,则不需要其他if语句。