【问题标题】:Editing date to DD-mmm-YYYY format将日期编辑为 DD-mmm-YYYY 格式
【发布时间】:2018-03-29 05:05:26
【问题描述】:

我希望使用 VBA 在 Excel 中正确格式化日期。我查看了其他解决方案,但没有帮助。

我正在使用 VBA 从页面中获取一个条目,对其进行格式化,然后将其编辑为一个 SQL 字符串,该字符串将通过 Oracle 数据库。

我需要日期为 DD-mmm-YYYY 格式,“2017 年 10 月 17 日”使用今天的日期。

我的代码:

Range("A1").Select
Selection.NumberFormat = "d-mmm-yyyy"
date= UserSheet1.Cells(1, 1)

在单元格中,它显示正确,但是当我在代码中引用“日期”变量时,它显示为 10/17/2017。

【问题讨论】:

  • 为什么一定要DD-MON-YYYY? Oracle 接受多种数据格式,包括DD/MM/YYYY
  • @MT0 你几乎肯定是对的,但也许我的小组配置数据库的方式,它拒绝了它?如果不幸没有以其他方式呈现,我会收到错误:(
  • 请提供minimal reproducible example,包括您用来将值传递给Oracle 的代码。就目前而言,它似乎是一个XY-problem,可以通过修复将日期传递给 Oracle 的方式而不是将日期转换为不同的格式来解决。
  • @Scott Craner 的回答没有问题地修复了它,所以,这是不必要的。另外,我认为粘贴 598 行代码也无济于事。一旦我使用了他的解决方案,我的程序就可以正常运行。无论如何,谢谢你的建议。

标签: excel vba oracle date


【解决方案1】:
  1. 不要使用.Select,它会减慢代码速度。

  2. 使用 .Text 返回单元格中的文本,否则返回 .Value,这是一个数字,即自 1900 年 1 月 1 日以来的天数。

所以:

Range("A1").NumberFormat = "d-mmm-yyyy"
date= UserSheet1.Cells(1, 1).Text

【讨论】:

  • 嗨,Scott Craner:感谢您的回答!我不知道只是从单元格中抓取“文本”,这似乎回答了我的问题并解决了问题。另外,感谢有关 .Select 的提示!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-08-17
  • 1970-01-01
  • 2018-02-14
  • 1970-01-01
  • 2016-05-20
  • 1970-01-01
  • 2021-07-20
相关资源
最近更新 更多