Ändern eines Zeichenfolgenwerts in das Datumsformat in VBA

1

Ich arbeite an einem VBA-Skript in Excel. Das folgende ist der Code, an dem ich arbeite.

    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

In diesem Code verwende ich eine Bedingung zum Vergleichen des inneren Datums mit dem Datum und dem Datum. Das fromdate und todate ist jedoch benutzerdefiniert. Sie sind im String-Format. Das innere Datum hat jedoch ein benutzerdefiniertes Format ("TT / MM / JJJJ H: MM"), da es aus SQL abgerufen wird. Also kann ich das Format des Innendatums nicht ändern. Deshalb muss ich das Format für fromdate und todate ändern, damit die Bedingung richtig funktioniert.

Ist es möglich, den vom Benutzer angegebenen Zeichenfolgenwert für fromdate und todate zu übernehmen und auf VBA-Ebene in das gewünschte Format zu ändern? oder gibt es einen anderen weg, dies zu erreichen?

Ramya
quelle

Antworten:

1

Die CDate Funktion erstellt ein Datum aus jedem gültigen Datumsausdruck

Aus der Excel VBA-Hilfe:

Datumsausdruck

Jeder Ausdruck, der als Datum interpretiert werden kann, einschließlich Datumsliteralen, Zahlen, die wie Datumsangaben aussehen, Zeichenfolgen, die wie Datumsangaben aussehen, und Datumsangaben, die von Funktionen zurückgegeben werden. Ein Datumsausdruck ist auf Zahlen oder Zeichenfolgen in beliebiger Kombination beschränkt, die ein Datum vom 1. Januar 100 bis zum 31. Dezember 9999 darstellen können.

Daten werden als Teil einer reellen Zahl gespeichert. Werte links von der Dezimalstelle geben das Datum an. Werte rechts von der Dezimalstelle geben die Uhrzeit an. Negative Zahlen stehen für Daten vor dem 30. Dezember 1899.

Dale M
quelle
Danke für die Auskunft. Aber ich bin neu in VBA. kann ich die Syntax für die Verwendung dieser CDate-Funktion kennen. Wie füge ich es in meinen Code ein?
Ramya
Ich schlage vor, dass Sie das VBA-Hilfesystem verwenden
Dale M