首页 > 解决方案 > 如何在用户表单中格式化日期选择器 (DD.MM.YY)

问题描述

谢谢你再次阅读我的问题。我在列范围内输入日期,我注意到使用以下方法输入的两个日期之间的格式存在差异。方法 1:我有一个定制的用户表单,可以在日期选择器-自定义日期选择器弹出窗口中看到的活动单元格中输入日期

方法2:我用Cntrl+:一起输入日期。

我虽然单元格格式相同,但我注意到我在 Excel 中使用 LEN 公式调查的两个日期有所不同。

LEN 通过方法 1 给我的日期 05.08.2021 为 10,通过方法 2,LEN 为 5。在下一步中,我使用此日期推导出日历周数,由于两种方法存在差异,我使用方法 1 得到错误,它适用于方法 2。很可能是因为方法 1 持有一个非常长的 svalue,因为在我的日历周 vba 中,我将这个暗淡作为整数,我得到了错误。

谢谢你,希望我在这里得到帮助。

通过上述两种方法创建的两个相同日期在 第二列中解释,其中结果为 5 和 10。它是使用 excel 公式 LEN 得出的。我从这些日期中提取周数的周数 vba 仅适用于结果为 5 的日期,即当字符串的长度为 5 时。但是,例如在这种情况下,当它为 10 时,我得到运行时错误 6,如图所示运行时错误 6

标签: excelvbadatepickerdate-formattingweek-number

解决方案


实际上,代码非常混乱。我希望这是您希望检查的代码。

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

推荐阅读