Excel VBA未按我希望的方式读取日期数据
我有一个程序可以从手机读取日期。在该单元格中,我只需在VBA之外的单元格中键入它,就为它指定了=NOW()的值。单元格格式为日期,格式为:dd month(例如:1月28日)。VBA读取单元格时,将其读取为mm/dd/yyy 00:00:00 AM/PM。有没有办法让我的代码按照我设置的格式读取月份?我的代码的一部分如下:Excel VBA未按我希望的方式读取日期数据,excel,vba,Excel,Vba,我有一个程序可以从手机读取日期。在该单元格中,我只需在VBA之外的单元格中键入它,就为它指定了=NOW()的值。单元格格式为日期,格式为:dd month(例如:1月28日)。VBA读取单元格时,将其读取为mm/dd/yyy 00:00:00 AM/PM。有没有办法让我的代码按照我设置的格式读取月份?我的代码的一部分如下: dashpos = InStr(1, ThisWorkbook.Worksheets("Main").Cells(2, 15), "-") curmonth = Right(
dashpos = InStr(1, ThisWorkbook.Worksheets("Main").Cells(2, 15), "-")
curmonth = Right(ThisWorkbook.Worksheets("Main").Cells(2, 15).Value, dashpos + 1)
包含日期的单元格是单元格(2,15)。然后,我继续使用该月的三个字母来确定下一个月,并使用一个Select Case curmonth。如果工作表中的格式为mm/dd/yyyy 00:00:00 AM/PM,则该月将始终有两位数字。因此:
curmonth = CLng(Left(ThisWorkbook.Worksheets("Main").Cells(2, 15).Text, 2))
然后,我继续使用该月的三个字母来确定下一个月
如果要确定下一个月,只需使用DateAdd
和month
。单元格格式是不相关的
下面返回月数:
Month(DateAdd("m", 1, Cells(2,15)))
如果出于某种原因,您希望它是一个三个字母的字符串,那么
Format(DateAdd("m", 1, Cells(2,15)), "mmm")
为什么不在日期上使用
月
功能呢?您的Select Case
是什么样子的?格式不重要。日期以数字形式存储在excel中。试试这个MonthName(Month(Month)(thishworkbook.Worksheets(“Main”).Cells(2,15).Value),True)
将为您提供Jan
在您的情况下,所有这些修复都能满足我的要求!最后,我提取了数字,并使用Select Case将数字转换为当月的前三位数字。谢谢大家的帮助!
Format(DateAdd("m", 1, Cells(2,15)), "mmm")