背景信息 我目前有一个VBA用户表单,它将每日KPI提交到Excel 2010中的Excel表格。表单设置为将今天的日期放入DD / MM / YYYY格式的文本框中(我在澳大利亚),然后转移点击提交时,该信息到Excel工作表。以前,这个过程顺利进行,因为它只是传输纯文本。但现在,日期以美国格式(MM / DD / YYYY)提交。我很确定问题出在Excel的某个地方,但无论如何这里是我的VBA代码:
'First it populates the text box
Private Sub UserForm_Activate()
TextBox1.Text = Format(Now(), "DD/MM/YYYY")
End Sub
'Then it transfers to the spreadsheet
With nwb.Sheets("daily_tracking_dataset_master")
.Cells(emptyRow, 1).Value = TextBox1.Value
主要问题 在Excel端的某处,数据现在以美国日期格式错误地提交,因此6月4日的提交将成为4月的第6次,请参见image:http://tinypic.com/r/2vslyd5/8/。
当我将数字格式更改为“常规”时,表示VBA表单中的纯文本日期已转换为4月日期。即改变格式并不是一件简单的事情,日期实际上已经完全改变了:
我为此尝试了几种解决方法,包括:
根据Excel表格的性质,每次我的提交表单添加一条记录时,表格都会延长一行 - 我不确定这是否会产生任何影响,并且不知何故从表格中生成错误的日期设置?
任何对此进行故障排除的想法都会非常棒。
答案 0 :(得分:0)
在写回单元格时,您需要使用CDate将文本转换为实际日期值,以便VBA无法解释它:
.Cells(emptyRow, 1).Value = cdate(TextBox1.Value)