Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel VBA未按我希望的方式读取日期数据_Excel_Vba - Fatal编程技术网

Excel VBA未按我希望的方式读取日期数据

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(

我有一个程序可以从手机读取日期。在该单元格中,我只需在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(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")