首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Case语句比较当前数据+ 10天的VBA代码

问使用Case语句比较当前数据+ 10天的VBA代码
EN

Stack Overflow用户
提问于 2017-10-09 09:39:55
回答 1查看 522关注 0票数 0

我有VBA代码,允许用户输入日期并将输入的日期与当前的日期进行比较,以便以适当的颜色填充单元格,我正在使用Select语句。

我需要让单元格填写红色,用户输入的日期是当前日+ 10天。

怎么做的?

代码

代码语言:javascript
复制
 Private Sub CommandButton1_Click()

Dim i As Integer
Dim objDate As Date


MsgBox (objDate)

For i = Range("C5000").End(xlUp).Row To 2 Step -1 'Range upto 5000, chnge this as per your requirment'

    objDate = Date

    Select Case VBA.CDate(Cells(i, 3))

    Case IsEmpty(i)
         Cells(i, 3).Interior.ColorIndex = 0

    Case Is < VBA.Date()
        Cells(i, 3).Interior.Color = vbGreen

    Case Is = VBA.Date()
        Cells(i, 3).Interior.Color = vbYellow

    Case Is > VBA.Date()
        Cells(i, 3).Interior.Color = vbRed


  End Select
Next

End Sub
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-10-09 09:59:22

这是另一种实现这一目标的方法。将这两个日期之间的差异作为测试表达式,然后检查每一种情况(即,它是否小于0,等于它,还是差大于10)。

代码语言:javascript
复制
If IsEmpty(Cells(i, 3)) Then Exit Sub
Select Case (VBA.CDate(Cells(i, 3)) - VBA.Date())
    Case Is < 0
        Cells(i, 3).Interior.Color = vbGreen
    Case 0
        Cells(i, 3).Interior.Color = vbYellow
    Case Is > 10
        Cells(i, 3).Interior.Color = vbRed
    Case Else
        'Colour to be applied if the difference is between 1 and 10 (both inclusive)
End Select

而且,您对IsEmpty的测试将无法按您的意愿工作,因为您正在检查i (计数器)是否为空。它将始终返回False。此外,单元格的ColorIndex已经为0。因此,除非您的代码必须检查以前非空单元格是否变为空,否则Cells(i, 3).Interior.ColorIndex = 0部分是不必要的。

更新:

作为一个有趣的实验,我尝试了一下结果,下面是截图:

宏的作用

PS:,因为OP没有提到颜色,因为当差在1到10之间时,我把这些细胞涂成黑色:-P

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46643315

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档