Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.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
Vba 来自Userform的日期未正确传输_Vba_Date_Excel - Fatal编程技术网

Vba 来自Userform的日期未正确传输

Vba 来自Userform的日期未正确传输,vba,date,excel,Vba,Date,Excel,我在Excel 2013中有一个userform,其中一个文本框允许用户在DD/MM/YYYY格式中输入日期,当用户单击Add按钮时,它会将其转移到工作表上的下一个可用行中 我遇到的问题是,如果用户输入的日期是2012年8月1日,即2013年8月1日,那么它将作为2013年8月1日添加到工作表中;如果我输入的日期是2013年8月22日,那么它将正确输入日期-2013年8月22日。如果我将日期作为2013年8月1日输入用户表单,则会将其作为2013年1月8日添加到工作表中 我使用的两行代码是:-

我在Excel 2013中有一个userform,其中一个文本框允许用户在DD/MM/YYYY格式中输入日期,当用户单击Add按钮时,它会将其转移到工作表上的下一个可用行中

我遇到的问题是,如果用户输入的日期是2012年8月1日,即2013年8月1日,那么它将作为2013年8月1日添加到工作表中;如果我输入的日期是2013年8月22日,那么它将正确输入日期-2013年8月22日。如果我将日期作为2013年8月1日输入用户表单,则会将其作为2013年1月8日添加到工作表中

我使用的两行代码是:- 工作表(“数据负债”).Range(“A”和Drow).NumberFormat=“dd/mm/yyyy” 工作表(“数据债”).Range(“A”和Drow).Value=UserForm4.TextBox1.Value

有人能告诉我我做错了什么吗

顺便说一句,我将工作表中的列设置为短日期格式

提前谢谢


Keith将日期作为字符串获取,然后使用DateSerial()函数:

Sub DepositDate()
    Dim sD As String, D As Date
    sD = Application.InputBox(Prompt:="Please enter date as dd/mm/yyyy", Type:=2)
    ary = Split(sD, "/")
    Range("A1").Value = DateSerial(ary(2), ary(1), ary(0))
    Range("A1").NumberFormat = "dd/mm/yyyy"
End Sub

在文本框中接受日期通常会产生此问题。也许可以解决您的问题?回显sid的注释,我可能会使用3个文本框,甚至可以使用组合框,这样可以更好地控制输入(通过限制允许的值列表),并确保它们始终是数字类型,等等。