【问题标题】:Date and format functions日期和格式函数
【发布时间】:2016-02-04 01:32:12
【问题描述】:

我在用户表单上有一个组合框(下拉列表),其中列出了当前日期和昨天的日期。代码如下:

With currentDate
.AddItem Date
.AddItem Date - 1 
End With

由于这会返回系统日期,我在格式化它时遇到了问题,因为宏在不同的计算机上使用并且它们具有不同的系统日期格式。对于某些人来说,日期格式是“mm/dd/yyyy”,例如“11/04/2015”和一些系统日期格式是“dd/mm/yyyy”,例如“2015 年 4 月 11 日”。即使系统日期格式设置为“mm/dd/yyyy”,我也需要组合框来显示“dd/mm/yyyy”

我试过这样做:

datefor = Date
datefor = Format(datefor, "dd/mm/yyyy")

With currentDate
.AddItem Date
.AddItem Date - 1
End With

但我不断收到错误消息。有什么想法吗?

【问题讨论】:

  • Format(Date - 1, "dd/mm/yyyy") 这将是一个字符串而不是数字,但应该按照你的要求做

标签: vba excel date datetime


【解决方案1】:

我认为您需要减少 Date 值,然后减少 Format。

试试这个方法:

With currentDate
.AddItem Format(Date, "dd/mm/yyyy")
.AddItem Format(Date -1, "dd/mm/yyyy")
End With

根据 Scott 的 cmets 进行编辑。

【讨论】:

  • 你的最后一行会抛出一个错误,因为你试图从一个字符串中减去一个。
  • 在没有Date - 1 的情况下尝试了这个,它仍然没有工作,我的意思是,我把错误排除在外,但它仍然显示系统的日期格式“mm/dd/yyyy "
  • 让我补充我所说的,通过将 datefor 声明为数学将发生的日期,但根据本地设置,它将减去一个月或一天。对我来说,因为我使用美国设置,它会减去一个月,如果我使用的是英语设置,那么是的,它会起作用。确保不管的唯一方法是在格式化之前进行数学计算。
  • @ScottCraner 啊哈,这更有意义,因为我在英国,我没有注意到这一点。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-10-16
  • 1970-01-01
  • 2015-03-15
  • 1970-01-01
  • 2016-03-13
  • 2010-12-28
相关资源
最近更新 更多