如何在用户窗体中格式化日期选择器 (DD.MM.YY)
How to format the date picker (DD.MM.YY) in an userform
感谢您再次阅读我的问题。我在列范围内输入一个日期,我注意到使用以下方法输入的两个日期之间的格式不同。
方法 1:我有一个自定义的用户表单,用于在 Date picker-custom date picker pop-up
中看到的活动单元格中输入日期
方法二:我用的是Cntrl+:一起输入日期
虽然单元格格式相同,但我注意到我使用 excel 中的 LEN 公式调查的两个日期有所不同。
LEN 通过方法 1 和方法 2 为我提供日期 05.08.2021 为 10,LEN 为 5。
在下一步中,我使用这个日期来导出日历周数,并且由于这两种方法存在差异,我在使用方法 1 时遇到错误,并且它在方法 2.Most 中工作正常,可能是因为方法 1持有一个很长的值,因为在我的日历周 vba 我有这个暗淡的整数,我得到了错误。
谢谢你,希望我能在这里得到帮助。
Two same dates created by the above two methods explained
在结果为 5 和 10 的第二列中。它是通过使用 excel 公式 LEN 得出的。我的周数 vba 从这些日期中提取周数仅适用于结果为 5 的日期,即当字符串的长度为 5 时。但是在这种情况下,例如当它为 10 时,我得到 运行时间错误6 如图Run-time error 6
实际上代码很乱。我希望这是你想要检查的代码。
Sub setDate()
Dim tempUFX As Object
'Dim tempUFX As Object
Dim ufr As Object
For Each ufr In UserForms
If ufr.Name = FormName_SetDate Then
Set tempUFX = ufr
Exit For
End If
Next ufr
If Not tempUFX Is Nothing Then
'Set tempUFX = UserForms(FormName_SetDate)
tempUFX.Controls(ctrlName_SetDate).Value = sDate
tempUFX.Controls(ctrlName_SetDate).SetFocus
End If
Unload PopDatePickerX
Range(cCell).Value = Format(sDate, DatePickerX_DateFormat)
'Range(cCell).NumberFormat = "dd.mm.yyyy" ' added on 05.08.2021
Unload PopDatePickerX
End Sub
将日期放入单元格时,不应使用 Format
,因为那样会将日期转换为文本。
相反,您应该使用 CDate 或 DateValue 来获取 'real' 日期值,您可以根据需要设置格式,并在 calculations/comparisons.
中使用
所以,在发布的代码中尝试替换它,
Range(cCell).Value = Format(sDate, DatePickerX_DateFormat)
有了这个。
Range(cCell).Value = CDate(sDate)
Range(cCell).NumberFormat = "dd.mm.yyyy" ' added on 05.08.2021
请注意,您可能不需要第 2 行,因为 Excel 可能会根据区域设置自动根据需要设置日期格式。
发生另一个错误 - VBA 运行 时间错误 1004:对象“_ Global”的方法“范围”失败:
代码如下:
Sub setDate()
Dim tempUFX As Object
Dim ufr As Object
For Each ufr In UserForms
If ufr.Name = FormName_SetDate Then
Set tempUFX = ufr
Exit For
End If
Next ufr
If Not tempUFX Is Nothing Then
tempUFX.Controls(ctrlName_SetDate).Value = sDate
tempUFX.Controls(ctrlName_SetDate).SetFocus
End If
Unload PopDatePickerX
Range(cCell).Value = CDate(sDate)
Unload PopDatePickerX
End Sub
前面提到的解决方案有效,但当我有一个定义范围(O 列和 R 列)的日期日历时就是这种情况。相同的日期选择器也用在用户窗体上,现在在执行此用户窗体时,在选择日期后发生此错误。
调试器突出显示以下行:-
Range(cCell).Value = CDate(sDate)
感谢您再次阅读我的问题。我在列范围内输入一个日期,我注意到使用以下方法输入的两个日期之间的格式不同。 方法 1:我有一个自定义的用户表单,用于在 Date picker-custom date picker pop-up
中看到的活动单元格中输入日期方法二:我用的是Cntrl+:一起输入日期
虽然单元格格式相同,但我注意到我使用 excel 中的 LEN 公式调查的两个日期有所不同。
LEN 通过方法 1 和方法 2 为我提供日期 05.08.2021 为 10,LEN 为 5。 在下一步中,我使用这个日期来导出日历周数,并且由于这两种方法存在差异,我在使用方法 1 时遇到错误,并且它在方法 2.Most 中工作正常,可能是因为方法 1持有一个很长的值,因为在我的日历周 vba 我有这个暗淡的整数,我得到了错误。
谢谢你,希望我能在这里得到帮助。
Two same dates created by the above two methods explained 在结果为 5 和 10 的第二列中。它是通过使用 excel 公式 LEN 得出的。我的周数 vba 从这些日期中提取周数仅适用于结果为 5 的日期,即当字符串的长度为 5 时。但是在这种情况下,例如当它为 10 时,我得到 运行时间错误6 如图Run-time error 6
实际上代码很乱。我希望这是你想要检查的代码。
Sub setDate()
Dim tempUFX As Object
'Dim tempUFX As Object
Dim ufr As Object
For Each ufr In UserForms
If ufr.Name = FormName_SetDate Then
Set tempUFX = ufr
Exit For
End If
Next ufr
If Not tempUFX Is Nothing Then
'Set tempUFX = UserForms(FormName_SetDate)
tempUFX.Controls(ctrlName_SetDate).Value = sDate
tempUFX.Controls(ctrlName_SetDate).SetFocus
End If
Unload PopDatePickerX
Range(cCell).Value = Format(sDate, DatePickerX_DateFormat)
'Range(cCell).NumberFormat = "dd.mm.yyyy" ' added on 05.08.2021
Unload PopDatePickerX
End Sub
将日期放入单元格时,不应使用 Format
,因为那样会将日期转换为文本。
相反,您应该使用 CDate 或 DateValue 来获取 'real' 日期值,您可以根据需要设置格式,并在 calculations/comparisons.
中使用所以,在发布的代码中尝试替换它,
Range(cCell).Value = Format(sDate, DatePickerX_DateFormat)
有了这个。
Range(cCell).Value = CDate(sDate)
Range(cCell).NumberFormat = "dd.mm.yyyy" ' added on 05.08.2021
请注意,您可能不需要第 2 行,因为 Excel 可能会根据区域设置自动根据需要设置日期格式。
发生另一个错误 - VBA 运行 时间错误 1004:对象“_ Global”的方法“范围”失败:
代码如下:
Sub setDate()
Dim tempUFX As Object
Dim ufr As Object
For Each ufr In UserForms
If ufr.Name = FormName_SetDate Then
Set tempUFX = ufr
Exit For
End If
Next ufr
If Not tempUFX Is Nothing Then
tempUFX.Controls(ctrlName_SetDate).Value = sDate
tempUFX.Controls(ctrlName_SetDate).SetFocus
End If
Unload PopDatePickerX
Range(cCell).Value = CDate(sDate)
Unload PopDatePickerX
End Sub
前面提到的解决方案有效,但当我有一个定义范围(O 列和 R 列)的日期日历时就是这种情况。相同的日期选择器也用在用户窗体上,现在在执行此用户窗体时,在选择日期后发生此错误。
调试器突出显示以下行:-
Range(cCell).Value = CDate(sDate)