提问人:Andrea 提问时间:9/12/2023 最后编辑:BigBenAndrea 更新时间:9/12/2023 访问量:27
在单元格中搜索默认日期
Searching a default date inside cells
问:
我正在从 SQL 数据库中检索一些信息。有时碰巧收到一个空白日期,Excel 在默认日期中转换:01/01/1900
我想放置一个空白值而不是默认日期,但我的问题是我尝试搜索默认日期的所有方法都不起作用。
我在 For 循环中尝试了这些代码,但每次使用它时,Excel 都找不到默认日期。如果我调试并停止并尝试正常搜索。Excel 告诉我不可能找到 01/01/1900,就像它找不到那个日期一样。
Set Rng = Cells.Find(What:=CDate(2) _
, After:=ActiveCell _
, LookIn:=xlValues _
, LookAt:=xlWhole _
, SearchOrder:=xlByRows _
, SearchDirection:=xlNext _
, MatchCase:=False _
, SearchFormat:=False)
If Rng Is Nothing Then GoTo NextPage
sRngTrov = Rng.Address
Range(sRngTrov).Select
Selection.NumberFormat = "0"
Range(sRngTrov).Value = ""
你有解决方案吗?
答:
0赞
taller
9/12/2023
#1
请尝试使用与单元格相同的样式设置日期格式。我已经在 Excel 365 版本 2309 上测试了代码。
Set Rng = ActiveSheet.Cells.Find(What:=Format(CDate(2), "mm/dd/yyyy") _
默认日期格式可能不同。仔细检查一下
Debug.Print CDate(2), Format(CDate(2), "mm/dd/yyyy")
评论
0赞
Andrea
9/12/2023
我尝试了您的解决方案,但仍然不起作用。它什么也没找到,也是不可能的,因为我看到了日期。
0赞
Andrea
9/12/2023
#2
我找到解决方案,将Application.FindFormat.NumberFormat放在Find之前。
Application.FindFormat.NumberFormat = "m/d/yyyy"
Set Rng = Cells.Find(What:=Format(CDate(2), "m/d/yyyy") _
, After:=ActiveCell _
, LookIn:=xlValues _
, LookAt:=xlPart _
, SearchOrder:=xlByRows _
, SearchDirection:=xlNext _
, MatchCase:=False _
, SearchFormat:=True)
If Rng Is Nothing Then GoTo Next
评论
0赞
taller
9/12/2023
屏幕截图上的数据不在 中。m/d/yyyy
评论
What:="01/01/1900"
?Set Rng = Cells.Find(What:=CDate(1)
.VBA 日期和 Excel 日期具有不同的基数 ( vs .这使得在存储值一致之前的日期变得混乱。您也可以使用 ,但这可能不太可靠,尤其是在更改该列的日期格式时。31-Dec-1899
1-Jan-1900
1-Mar-1900
what:="1/1/1900"