【问题标题】:Excel ActiveX combobox displays selected date as number rather than dateExcel ActiveX 组合框将所选日期显示为数字而不是日期
【发布时间】:2018-07-04 13:44:47
【问题描述】:

我有一个 ActiveX 组合框。它的 ListFillRange 是另一张纸上的范围。它找到日期,但是当我选择它们时,我得到了这个奇怪的值。任何人都知道发生了什么以及如何解决它?

我尝试过通过 VBA 代码修复它,但同样的问题,我将不胜感激。

示例代码:

Private Sub ProdDateCombobox_DropButtonClick()
ProdDateCombobox.ListFillRange = "ProductionList"
End Sub

ProductionList 是一系列单元格 D2;D100 与日期

【问题讨论】:

  • 参见How to Ask,尤其是它讨论提供minimal reproducible example 的地方。基本上:展示;别说。
  • 但是当我无法发布图片时如何显示? :P
  • 什么奇怪的值?什么代码?什么是要修复的?
  • @Linexxlol 您不太可能发布图片。 Edit 并格式化问题并将重现或说明您的问题的相关代码放在问题的正文中。不要发布代码或错误消息的图像,因为这是易于复制和搜索的文本信息。
  • 我有一个 activex 组合框。它的工作是显示从另一张纸上获取的日期,例如“13-03-2018”。所以它显示这些日期没有问题,但是。当我在组合框下拉菜单中选择它们时,它们会更改为一些奇怪的值,例如 43124。我已经用代码编辑了我的原始帖子

标签: excel vba


【解决方案1】:

您得到的数字是自 1900 年 1 月 1 日以来的天数 - 这是 Excel 存储日期的方式。

问题的一种解决方法是:

您的日期格式为日期,位于D2:D100 范围内,命名为ProductionList

当您选择下拉菜单时,日期会正确显示在下拉菜单中,但所选日期显示为数字 - 2018 年 7 月 4 日,显示数字 43285(自 1900 年 1 月 1 日以来的天数)。

  • 在空白范围内输入公式=TEXT(D2,"dd/mm/yyyy"),其中D2ProductionList 命名范围内的第一个日期。将公式向下拖动到日期的末尾。
  • 复制这个新的公式范围并粘贴特殊作为仅覆盖您的原始列表。

您的原始列表现在应该在组合框中正确显示,但是在尝试将日期与链接的单元格进行比较时会遇到问题。

例如,如果您的链接单元格是A5,则公式=MATCH(DATE(2018,3,1),$A$5,0) 将返回#N/A

要解决此问题,请在单元格 B5=A5+0 中输入一个公式并与之进行比较。将 0 添加到您的文本日期的行为将强制它重新计算为真实日期。

【讨论】:

  • 这部分解决了问题,但是我无法将公式向下拖动,因为我的所有其他日期都将与我原来的日期相同。我也不能粘贴特殊的值,只能粘贴 unicode 文本和文本。编辑:@bassfader 解决了我的问题
  • 为什么拖不下来? D2 将在您向下拖动时更新,因为它是 relative referenceUnicode text & text 听起来像是在使用 Excel 应用程序的新实例,而不是在原始范围旁边的空白范围内输入公式。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-10-24
  • 1970-01-01
  • 2021-11-09
  • 1970-01-01
  • 2018-06-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多