【问题标题】:VBA: If cell format is date then do somethingVBA:如果单元格格式是日期,那么做一些事情
【发布时间】:2016-06-25 16:39:08
【问题描述】:

我在为宏设置条件时遇到问题。 它应该这样做:

If CELL_A is * **AND** CELL_B is **DATE** then....

    Sub kontrolafyzprav()

radek = 4

  With List1

    Do While .Cells(radek, 3) <> ""
        If .Cells(radek, 3) = "DOM" And .Cells(radek, 7).NumberFormat = "General" Then
            .Cells(radek, 3).Interior.Color = RGB(255, 150, 150)
            .Cells(radek, 7).Interior.Color = RGB(255, 150, 150)

        ElseIf .Cells(radek, 3) = "MO" And .Cells(radek, 7).NumberFormat = "d/m/yyyy" Then
            .Cells(radek, 3).Interior.Color = RGB(255, 150, 150)
            .Cells(radek, 7).Interior.Color = RGB(255, 150, 150)
                    ' :(    :(     :(     :(

        End If
                radek = radek + 1
    Loop

  End With

End Sub

ElseIf .Cells(radek, 3) = "MO" And .Cells(radek, 7).NumberFormat = "d/m/yyyy" Then 一致,我尝试了我能想到的一切。

第一组条件很好,但我无法获得第二组:/

有什么帮助吗?

【问题讨论】:

  • 您是否尝试过调试程序以找出为什么第二组条件不起作用?你的代码有什么问题?您确定Cells(radek, 7) 格式设置为d/m/yyyy 吗?
  • @MaciejLos 我尽我所能确定它在 d/m/yyyy 中。无论如何,它已经在下面得到了解决,它工作得很好。不要问我怎么样o.O
  • 我看到了答案,但你看到我对它的评论了吗?

标签: vba excel date format


【解决方案1】:

本机 VBA IsDate Function 可以很好地确定单元格的内容,以查看它是否包含日期。 Range.Value property(但不是Range.Value2 property)保留的区域特定日期设置有助于做出决定。

Sub kontrolafyzprav()
    Dim raek As Long

    radek = 4

    With List1
        Do While .Cells(radek, 3) <> ""
            If .Cells(radek, 3) = "DOM" And .Cells(radek, 7).NumberFormat = "General" Then
                .Cells(radek, 3).Interior.Color = RGB(255, 150, 150)
                .Cells(radek, 7).Interior.Color = RGB(255, 150, 150)

            ElseIf .Cells(radek, 3) = "MO" And IsDate(.Cells(radek, 7)) Then
                .Cells(radek, 3).Interior.Color = RGB(255, 150, 150)
                .Cells(radek, 7).Interior.Color = RGB(255, 150, 150)
                        ' :(    :(     :(     :(
            End If
            radek = radek + 1
        Loop
    End With

End Sub

IsDate 函数不会被无效的日期文本所迷惑。

【讨论】:

  • 我可以在 4 分钟内接受答案......但我现在肯定想这样做 :D 非常感谢,这很好用!
  • IsDate 函数存在一些已知问题。例如,它可能会为此语句返回 true:13:28。假设用户想要验证正确的输入,IsDate 函数可能不是 OP 正在寻找的......
  • @MaciejLos 在这种情况下,作为源的 csv 永远不会包含时间(13:28),所以在这个解决方案中非常好。
  • @loqan,好的。如果它符合您的标准,我将支持 Jeeped 的回答;)
  • @MaciejLos 谢谢,我明白你的意思,它可能不是所有案例的答案,但是是的,它可以拯救别人的神经 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-27
  • 1970-01-01
  • 2011-11-18
  • 2014-02-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多