ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > 我的测验 > Excel VBA > VBA练习01【日期时间比大小】

VBA练习01【日期时间比大小】

作者:绿色风 分类: 时间:2022-08-18 浏览:681
楼主
水星钓鱼
 
如图所示:A1单元格是个标准的日期时间格式(可被Excel识别),B1单元格是用文本形式输入的日期,C1单元格的公式是
  1. =A1<B1
目前C1单元格的结果是True,逻辑上A1应该是大于B1的。
现在假设A1单元格内容不变,B1单元格的内容用VBA代码生成,如何判断这两个时间的逻辑大小(返回FALSE)
前期代码我已经写好了,请补充注释下的代码
  1. Sub xyf()
  2.    Dim oV1, oV2
  3.    oV1 = Cells(1, 1)
  4.    oV2 = "2014-1-2 11:00"
  5.    '此处写上你的代码判断oV1,oV2的逻辑大小
  6.    
  7. End Sub
1.可以凭直觉写下尚未调试的代码看是否正确2.不能再增加中间变量
3.正确答案加魅力值1分,优秀答案加魅力值5分。
附件如下:

VBA练习01【日期时间比大小】.rar





2楼
天南地北
是这样么?
  1. Sub xyf()
  2.    Dim oV1, oV2
  3.    oV1 = Cells(1, 1)
  4.    oV2 = "2014-1-2 11:00"
  5.    '此处写上你的代码判断oV1,oV2的逻辑大小
  6.    Dim oV3 As Date
  7.    oV3 = oV2
  8.    Cells(1, 3) = oV1 < oV3
  9. End Sub
  1. Sub xyf()
  2.    Dim oV1, oV2
  3.    oV1 = Cells(1, 1)
  4.    oV2 = "2014-1-2 11:00"
  5.    '此处写上你的代码判断oV1,oV2的逻辑大小
  6.    Cells(1, 3) = oV1 < CDate(oV2)
  7. End Sub
  1. Sub xyf()
  2.    Dim oV1, oV2
  3.    oV1 = Cells(1, 1)
  4.    oV2 = "2014-1-2 11:00"
  5.    '此处写上你的代码判断oV1,oV2的逻辑大小
  6.    Cells(1, 2) = oV2
  7.    Cells(1, 3) = oV1 < Cells(1, 2)
  8. End Sub



3楼
0Mouse
是要求用vba把两个日期的比较结果写入C1?
  1. Range("C1").Value = oV1 < CDate(oV2)
4楼
windimi007
  1. MsgBox oV1 < CDate(oV2)

5楼
windimi007
  1. MsgBox oV1 < DateValue(oV2) + TimeValue(oV2)
6楼
wise
请查看:
  1.    [C1] = (oV1 < CDate(oV2))
7楼
wjc2090742
  1. If TimeValue(oV2) + DateValue(oV2) > oV1 Then MsgBox oV2 & ">" & oV1 Else MsgBox oV1 & "大等于" & oV2
8楼
windimi007
  1. MsgBox oV1 < DateAdd("d", 1, oV2) - 1
9楼
windimi007
再来个和8楼差不多的哈!

  1. MsgBox oV1 < DateAdd("d", -1, DateAdd("d", 1, oV2))
10楼
hustclm
  1. MsgBox oV1 < Replace(oV2, "-", "/")
11楼
amulee
在中国,这个表达式没有问题
  1. MsgBox oV1 < CDate(oV2)

如果其他语言系统,有可能有问题。时间和日期最保险的做法是用DateSerial生成。
CDate会根据控制面板中的设置将日期转换,若某个国家日期格式是"YYYY-D-M H:S"(我也不知道哪个国家,别问我),那么就可能会有问题。如果假设你给出的表达式是“YYYY-M-D H:S”格式的,那么比较好的做法是如下的做法。
  1. MsgBox oV1 < DateSerial(Split(Split(oV2, " ")(0), "-")(0), _
  2.                         Split(Split(oV2, " ")(0), "-")(1), _
  3.                         Split(Split(oV2, " ")(0), "-")(2)) + _
  4.              TimeSerial(Split(Split(oV2, " ")(1), ":")(0), _
  5.                         Split(Split(oV2, " ")(1), ":")(1), 0)
12楼
oldyuan
  1. Sub xyf()
  2.    Dim oV1, oV2
  3.    oV1 = Cells(1, 1)
  4.    oV2 = "2014-1-2 11:00"
  5.    '此处写上你的代码判断oV1,oV2的逻辑大小
  6.    Cells(1, 3) = oV1 < CDate(oV2)
  7. End Sub
13楼
xgixvuxx
我在这里找了不少剑灵的服装替换  网站叫希望之地  还不错  他们搞剑灵破解挺专业的
14楼
bluexuemei
  1. Sub xyf()
  2.    Dim oV1, oV2
  3.    oV1 = Cells(1, 1)
  4.    oV2 = "2014-1-2 11:00"
  5.    '此处写上你的代码判断oV1,oV2的逻辑大小
  6.     [c1] = oV1 < DateValue(oV2) + TimeValue(oV2)
  7. End Sub
15楼
zhouzhongchi
不会呀,看老师的解答

免责声明

有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素, 经与ExcelTip.Net站长Apolloh商议并征得其同意, 现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示, 供有需要的人士查询使用,也慰缅曾经的论坛时代。 所示各个帖子的原作者如对版权有异议, 可与本人沟通提出,或于本站点留言,我们会尽快处理。 在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一

评论列表
sitemap