VBA 使用 format() 或 CDate() 将字符串转换为日期时出现问题

2024-01-03

如果以前曾问过这个问题,请为我指出正确的方向。我似乎无法用我的谷歌搜索技能找到任何有用的东西。

我有以下代码,它读取这样的字符串;停电开始日期: 05/10/11 23:59 EST
并提取日期信息,即 05/10/11 23:59

sStartTime = Mid(objItem.Body, 18, 15) ' Extract the start time
Debug.Print "sStartTime after reading: " & sStartTime
sStartTime = Format(sStartTime, "dd/mm/yy hh:mm") ' Format date correctly
Debug.Print "sStartTime after formatting: " & sStartTime

这是我通常得到的输出:

sStartTime after reading:  05/10/11 23:59
sStartTime after formatting: 10/05/11 23:59

但有时它甚至会交换日期和年份:

sStartTime after reading:  14/07/11 23:59
sStartTime after formatting: 11/07/14 23:59

然后 CDate 完全填充了一些东西,将日期转换为 1931 年之类的东西......任何将日期字符串转换为日期对象的帮助都将不胜感激。

===============

编辑:可能应该在最初的帖子中提到这一点。读取字符串背后的想法是转换为 Date 对象,以便我可以创建日历约会。 目前我用这个;

dStartTime = CDate(sStartTime)

我认为这是问题所在, sStartTime = "29/09/11 23:00" (dd/mm/yy hh:mm) 和 dStartTime = "11/9/2029 11:00:00 PM"

很明显,那里存在一些转换问题,但我不知道我应该将什么格式提供给 CDate 函数才能转换 29/09/11 23:00 进入等效日期对象。


Format(sStartTime, "dd/mm/yy hh:mm")无法正常工作,因为 sStartTime 是一个字符串,而不是日期。
您必须做一些额外的工作才能获得正确输入的日期,例如
dStartTime= DateSerial(Mid(sStartTime,10,2),Mid(sStartTime,7,2),Mid(sStartTime,4,2)) + TimeSerial(...) etc...
然后,您将能够正确应用您的 Format 函数。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

VBA 使用 format() 或 CDate() 将字符串转换为日期时出现问题 的相关文章

  • 将文档属性字段添加到页脚会删除现有的页码

    我想在文档中每个页面的页脚中标记一个文档变量字段 我已经弄清楚如何添加该字段 但是 这样做时 页脚中已存在的页码字段将被禁用 仅保留文本并且不再充当动态页码 这是我的代码 它添加了该字段 但以某种方式禁用了页码 sectionFooter
  • 在 Excel 中用 VBA 替换 Chr(160) 时遇到问题

    我收到 Excel 文件已有一段时间了 这些文件通常在帐户后面受特殊字符 alt 0160 的困扰 我通常只是在 Excel 中手动替换它 但最近我变得懒惰了 想使用我的 VBA 脚本替换它 该脚本用于将所需的列插入到我们的数据库中 Sub
  • VBA getelementsbytagname问题

    早上好 我正在尝试提取 HTML 表信息并在 Excel 电子表格上整理结果 我正在使用getelementsbytagname table 0 函数来提取 HTML 表格信息 效果很好 有人可以告诉我这有什么意义吗 0 桌子之后 另外 我
  • 变量的变化触发事件

    是否可以通过变量的更改来触发事件 例如 这将触发事件 Dim t As Integer Dim Fire As Boolean Private Sub Test t 0 Fire True IIf Fire t 1 t 2 End sub
  • 如何使用 Excel VBA 根据货币标准格式化列中的数字?

    我想格式化一列的所有单元格 数据是一个数字 我想从左边添加一个小数 之后只保留两位数 然后根据货币标准对其进行格式化 例如 Data Output 10000 100 00 112233 1 122 33 123456789 1 234 5
  • 如何从 500 个 .xls Excel 文件中的单元格中获取数据?

    我想问你如何从许多Excel中的几个确定的 并且总是相同的 单元格中获取数据 xls文件 即我有一个清单 xls文件位于一个文件夹中 每个文件内部都有相同的表 但具有不同的值 我想从以下位置获取数据A1 C2 E3从文件夹中的所有文件中提取
  • 使用@@Identity

    我想知道如何从另一个数据库的表中获取最近生成的自动编号值 目前我正在这样做 Do Until rsA EOF Inserts new row here works Set rs New ADODB Recordset rs Open SEL
  • 使用 Excel-VBA(MSXML2.XMLHTTP 对象)更新 SharePoint 列表

    基本信息 我需要从 Excel 更新 添加 编辑 SharePoint 列表 我能够做到这一点ListObject 但这不是我们要走向的方向 在阅读了所有谷歌可能性后 我想出了 也许我错了 使用的想法MSXML2 XMLHTTP对象来更新
  • 将图表导出为图像有时会生成空文件

    I m doing a macro that exports all the charts in the sheet and then opens Outlook and attaches them However I ve noticed
  • VBA - 填充自定义功能区下拉列表/列表框

    我无法填充下拉列表 列表框 原始代码来自 https exceloffthegrid com inserting a dynamic drop down in ribbon https exceloffthegrid com inserti
  • 根据当前工作簿中的匹配值编辑主工作簿中的单元格

    这里的目标是比较两个工作簿之间 A 列中的值 当前工作簿是 xlsm 目标工作簿是 xlsx 如果找到任何匹配项 匹配值同一行的 E 列中的值在目标工作簿中发生更改 在这种情况下 必须将工作簿分开 我决定通过选择当前工作簿 A2 中的第一个
  • 用户窗体上的类对象 TextBox 可用方法

    我注意到 当我为文本框创建类模块并在表单上使用它时 通过在表单 init 事件中通过 VBA 添加 Enter 或 Exit 方法都不可用 当然 如果我只是在表单中添加一个文本框 我可以让 DblClick 方法正常工作 因此我的类设置正确
  • excel 2010刷新BackgroundQuery中运行时错误1004

    我正在尝试用 vba 编写一个脚本 用于将多个文本文件导入 Excel 一张纸 然后将它们绘制在一张图表上 我面临一个问题刷新后台查询命令并出现 1004 运行时错误 我怎样才能解决它 谢谢 埃亚勒 这是我的代码 Sub fring1 Di
  • VBA 中的多线程

    这里有人知道如何让VBA运行多线程吗 我正在使用 Excel 无法用 VBA 本地完成 VBA 构建在单线程单元中 获得多个线程的唯一方法是使用 VBA 之外的其他具有 COM 接口的东西构建 DLL 并从 VBA 调用它 信息 OLE 线
  • 如何找到特定程序的安装目录?

    我已经成功地编写了一些用于工作的 VBA 宏 这些宏基本上创建了一个数据文件 将其提供给一个程序并对该程序的输出进行后处理 我的问题是程序安装路径是硬编码在宏中的 并且安装在我同事的计算机上可能会有所不同 我首先想到的是 我可以从每个人那里
  • VBA 有没有办法了解未使用的变量?

    标准 VBA 编辑器中是否有工具 方法或设置来警告已被修改的变量Dim med 但没有被使用 MZ Tools http www mztools com index aspx将搜索您的代码并告诉您哪些内容未被使用 VBA的版本可以找到her
  • 检查未绑定控件是否具有值的正确方法

    简单场景 一个表单和一个文本框 未绑定 Text1 If lt gt Text1 Then MsgBox Not Empty End If 上面的代码有效 表达方式 lt gt Text1如果文本框包含字符 则计算结果为 True 无论文本
  • SQL Excel VBA 运行时错误 3709 无效连接

    这是我的第一个问题 欢迎提出建设性的批评 我正在尝试从 Excel VBA 查询 Access 数据库并将返回信息放入 Excel 范围中 我收到此错误 错误消息 运行时错误 3709 连接无法用于 执行此操作 在此情况下它已关闭或无效 语
  • 如何在 Excel 中对“高”字符进行 HTML 编码或音译?

    在 Excel 中 如何将包含重音字符 大引号等的单元格内容转换为相同字符的 HTML 或音译纯文本版本 我们有一个 XLS 文档 其中包含一些 高 字符 数据已通过数据库连接提取 并且 Excel 似乎正确处理不同代码页中的各个单元格 或
  • 使用 VBScript 在日期字段值上选择错误的数据

    我有一张包含以下数据的表 现在 Excel 共有 36 个任务 每个任务有 4 列 第一个任务 即 Task1 名称将始终从 L 列开始 144 列描述了 36 个任务 现在我们需要按行进行检查 并需要检查 TNStart 开始日期 你们能

随机推荐