excel vba - 如何获取日期的日期名称?

Posted

技术标签:

【中文标题】excel vba - 如何获取日期的日期名称?【英文标题】:excel vba - How to get the Day Name of Date? 【发布时间】:2017-03-17 11:15:49 【问题描述】:

我有一个小代码可以获取 Excel 中列出的日期的日期名称。但问题是,它没有得到正确的日期名称(例如星期二)。

例如:

sDayName = Format(Day(11/1/2016), "dddd")

然后输出会产生一个不正确的日期名称,即:

sDayName = "Sunday"

应该是“星期二”。 谢谢大家的帮助。

【问题讨论】:

你试过 sDayName = Format("11/01/2016", "dddd") 吗?? 删除Day()部分,不需要 检查 online documentation for Format() function 你应该在哪里找到 firstdayoftheweek 参数 @cyberponk 谢谢伙计。问题解决了。请发布您的答案,以便我将其标记为正确。 FWIW - 您的代码试图找到 5.45634920634921E-03Day,即 11 除以 1,除以 2016。5.45634920634921E-03 相当于上午 7:51 的日期/时间在 1899 年 12 月 30 日,Day30。使用"dddd" 格式对30 进行格式化首先可以得出日期30 表示1900 年1 月29 日,即星期一。但是,由于 Excel 中的错误导致它认为 1900 年是闰年,因此 Excel 将其报告为星期日。 【参考方案1】:

对于您的特定要求,假设您的日期字符串被格式化为您的区域设置:

    sDayName = Format("11/01/2016", "dddd")

如果你想要今天的工作日:

    sDayName = Format(Date, "dddd")

如果您想要任何区域设置中任何日期的工作日

    sDayName = Format(DateSerial(2016, 11, 4), "dddd")
    'change 2016, 11, 4 for your year, month, day values

:)

【讨论】:

将代表DateString 传递给Format 并不是一个好主意。【参考方案2】:

WEEKDAY 函数可用于此主题和 Vba 代码。例如:

Label2.Caption = WeekdayName(Weekday(TextBox2, 0), False, 0)

我在创建有关活动单元格日期输入的用户表单时使用了此功能。

【讨论】:

以上是关于excel vba - 如何获取日期的日期名称?的主要内容,如果未能解决你的问题,请参考以下文章

如何用EXCEL VBA批量提取JPG文件日期时间信息到表格中?

VBA Excel在单元格中分隔日期范围

excle vba,如何查找一个已知值的行号和列号?

如何用vba实现在EXCEL固定区域坐标内点击单元格,显示日期控件

用VBA筛选日期区间

如何使用 VBA 在 Excel 注释中查找和替换日期格式