gpt4 book ai didi

excel - VBA 函数 : Extract Date from String - Type Mismatch

转载 作者:行者123 更新时间:2023-12-04 21:30:42 25 4
gpt4 key购买 nike

我写了一个简单的函数来从单元格中提取日期。我有一些包含字符串“5-Oct-2018”的单元格和其他包含“2018/10/10 Random Texts”的单元格。我想截断随机文本并将其余字符串转换为具有相同格式的日期。

由于随机文本仅在字符串大于 10 个字符或更长时才会出现,因此我决定将所有内容向右截断。

我写了以下内容,但它一直卡在“FnDateExtract = Format(CDate(RawExtract),“yyyy/mm/dd”)这一行,说类型不匹配。我究竟做错了什么?

Function FnDateExtract(fnFile, fnTab, fnRow, fnColumn) As Date
Dim RawExtract As String
With Workbooks(fnFile).Worksheets(fnTab)
RawExtract = .Cells(fnRow, fnColumn).Text
If Len(RawExtract) > 10 Then RawExtract = Left(RawExtract, 10)
FnDateExtract = Format(CDate(RawExtract), "yyyy/mm/dd")
End With
End Function

最佳答案

您的功能看起来不错,只需要进行一些小改动:

Function FnDateExtract(fnFile, fnTab, fnRow, fnColumn) As Date
Dim RawExtract As String
With Workbooks(fnFile).Worksheets(fnTab)
RawExtract = Left(CStr(.Cells(fnRow, fnColumn).Text), 10)
FnDateExtract = CDate(Format(RawExtract, "yyyy/mm/dd"))
End With
End Function

移动了 CDate()Format()之外用于将返回类型设置为 Date 的函数

另请注意,您可以使用 InStr(*string*, " ") - 1而不是 10Left()获取日期字符串的函数。在某些情况下它可能更准确。

关于excel - VBA 函数 : Extract Date from String - Type Mismatch,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52836146/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com