【发布时间】:2020-06-14 07:07:31
【问题描述】:
我有一个带有文本框的用户表单,允许我输入日期,然后该日期复制到格式为长日期“2020 年 1 月 1 日”的列/单元格中。但是,当我在用户表单文本框中输入日期为“01/01/2020”时,日期不正确为单元格格式。有人对我如何解决这个问题有任何想法吗?这是代码:
Dim lrow As Long
Dim LO As ListObject
Dim LEO As Range
Set ws = Worksheets("2020_Data")
Set LO = ws.ListObjects("Table1")
'lrow = ws.Cells(Rows.Count, "B") .End(xlUp). .Offset(1, 0) .Row
With LO.Range.Columns(2)
Set LEO = .Find(what:="", after:=.Cells(1), LookIn:=xlValues, _
searchorder:=xlByRows, searchdirection:=xlNext)
If Not LEO Is Nothing Then
lrow = LEO.Row
' MsgBox LEO.Row 'First empty row at column B
End If
End With
'rw = ws.Cells.Find(What:="*", SearchOrder:=xlRows, SearchDirection:=xlPrevious, LookInValues) .Row +
1
With ws
.Cells(lrow, "B").Value = DateValue(Me.TextBox6.Value)
.Cells(lrow, "C").Value = DateValue(Me.TextBox21.Value)
.Cells(lrow, "F").Value = Me.ComboBox2.Value
.Cells(lrow, "G").Value = Me.ComboBox3.Value
.Cells(lrow, "I").Value = Me.TextBox16.Value
.Cells(lrow, "H").Value = Me.TextBox17.Value
.Cells(lrow, "J").Value = Me.TextBox18.Value
End With
'Clear Input Controls.
Me.TextBox6 = ""
Me.TextBox21 = ""
Me.ComboBox2 = ""
Me.ComboBox3 = ""
Me.TextBox16 = ""
Me.TextBox17 = ""
Me.TextBox18 = ""
End Sub
提前感谢您的帮助! :)
【问题讨论】:
-
这是因为TextBox保存了一个字符串,而日期本质上是一个数字。试试`.Cells(lrow, "J").Value = DateValue(Me.TextBox18.Value)`
-
嗨@Variatus,感谢它本质上是有效的。但是,当我在两个文本框上尝试代码时,我一直收到错误:textbox6 和 21。看来我可以在两个文本框上运行代码,但是我需要在两个文本框的用户表单中输入数据。有没有一种方法可以运行上述代码而无需将数据填充到框中?让我选择只输入开始日期还是同时输入开始日期和结束日期?谢谢!
-
请编辑问题以仅包含相关代码。无论如何,您可以尝试分别使用 3 个文本框来表示月、日和年。然后使用
DateSerial在后台构造日期,然后将其转储到工作表中。 -
请edit 发帖说明哪些输入有效,哪些输入失败,以及在这些情况下的预期结果。
标签: vba userform cell-formatting