相关疑难解决方法(0)

Range.Find在VBA Excel中1月到11月(2月和12月)没有区别

假设我有以下琐碎的任务:

  • 写下2016年1月至2018年6月的第一个日期
  • 查找2016年1月1日,并将其涂成红色
  • 使用 Range.Find()

因此,我创建了一个代码,循环从1到30并写下每个月的第一个日期.然后我用Rows(1).Find(CDate("01.01.2016"))或者Rows(1).Find(DateSerial(2016,1,1))我认为我的任务几乎准备好了.

我运行代码,我在Excel 2010和Excel 2016中看到了这一点:

在此输入图像描述

问题: 背后有什么理由吗?或者Range.Find()记录的功能是这样的吗?

Public Sub TestMe()

    Cells.Clear

    Dim cnt             As Long
    For cnt = 1 To 30
        Cells(1, cnt) = DateAdd("M", cnt - 1, DateSerial(2016, 1, 1))
        Cells(1, cnt).NumberFormat = "MMM-YY"
    Next cnt

    Dim foundRange      As Range
    Set foundRange = Rows(1).Find(CDate("01.01.2016"))
    'Set foundRange = Rows(1).Find(DateSerial(2016, 1, 1))  'the same false result
    'Set foundRange = Rows(1).Find("01.01.2016")             'does not find anything
    If Not foundRange Is Nothing Then
        foundRange.Interior.Color …
Run Code Online (Sandbox Code Playgroud)

excel datetime vba date excel-vba

5
推荐指数
1
解决办法
490
查看次数

标签 统计

date ×1

datetime ×1

excel ×1

excel-vba ×1

vba ×1