在 VBA 中将字符串值更改为日期格式

在 VBA 中将字符串值更改为日期格式

我正在 Excel 中编写 VBA 脚本。以下是我正在处理的代码。

    Option Explicit

Sub MoveThingsAbout()

Worksheets("Sheet3").Cells.Clear

Worksheets("Sheet3").Range("A1").Value = "JOB"
Worksheets("Sheet3").Range("B1").Value = "STOCKCODE"
Worksheets("Sheet3").Range("C1").Value = "DATE"
Worksheets("Sheet3").Range("D1").Value = "QUANTITY TO MAKE"
Worksheets("Sheet3").Range("E1").Value = "QUANTITY MANUFACTURED"


  Dim row As Integer
  Dim fromdate As String
  Dim stockCode As String
  Dim todate As String
  Dim innerRow As Integer


   fromdate = ""
   todate = ""
   stockCode = ""

   stockCode = Worksheets("Sheet2").Range("B2").Value
    fromdate = Worksheets("Sheet2").Range("D2").Value
    todate = Worksheets("Sheet2").Range("F2").Value


    innerRow = 2
    row = 2
    Do While (Worksheets("Sheet1").Range("A" & innerRow).Value <> "")

        innerdate = ""
        innerStockCode = ""

        innerdate = Worksheets("Sheet1").Range("L" & innerRow).value
        innerStockCode = Worksheets("Sheet1").Range("G" & innerRow).Value

         If (stockCode = innerStockCode And (innerdate >= fromdate And innerdate <= todate)) Then

            Worksheets("Sheet3").Range("A" & row).Value = Worksheets("Sheet1").Range("A" & innerRow).Value
            Worksheets("Sheet3").Range("B" & row).Value = Worksheets("Sheet1").Range("G" & innerRow).Value
            Worksheets("Sheet3").Range("C" & row).Value = Worksheets("Sheet1").Range("L" & innerRow).Value
            Worksheets("Sheet3").Range("D" & row).Value = Worksheets("Sheet1").Range("U" & innerRow).Value
            Worksheets("Sheet3").Range("E" & row).Value = Worksheets("Sheet1").Range("V" & innerRow).Value

         End If

       innerRow = innerRow + 1
       row = row + 1

    Loop

End Sub

在此代码中,我使用将内部日期与起始日期和终止日期进行比较的条件。但起始日期和终止日期是用户定义的。它们是字符串格式。但内部日期是从 sql 中检索到的自定义格式(“dd/mm/yyyy h:mm”)。所以我无法更改内部日期的格式。因此,我必须更改起始日期和终止日期的格式,以便条件正常工作。

是否可以获取用户提供的 fromdate 和 todate 字符串值并在 VBA 级别将其更改为所需的格式?或者还有其他方法可以实现这一点吗?

答案1

CDate 函数根据任意有效的日期创建一个日期日期表达式

来自 Excel vba 帮助:

日期表达式

任何可解释为日期的表达式,包括日期文字、看起来像日期的数字、看起来像日期的字符串以及从函数返回的日期。日期表达式仅限于数字或字符串的任意组合,可以表示 100 年 1 月 1 日到 9999 年 12 月 31 日之间的日期。

日期作为实数的一部分存储。小数点左边的值表示日期;小数点右边的值表示时间。负数表示 1899 年 12 月 30 日之前的日期。

相关内容