Pracuję nad skryptami VBA w programie Excel. Poniżej znajduje się kod, nad którym pracuję.
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
W tym Kodeksie używam warunku porównania wewnętrznej daty z datą i datą. Ale data i data są zdefiniowane przez użytkownika. Są w formacie ciągu. Ale data wewnętrzna ma format niestandardowy („dd / mm / rrrr h: mm”), ponieważ jest pobierana z sql. Nie mogę więc zmienić formatu daty wewnętrznej. Dlatego muszę zmienić format fromdate i todate, aby warunek działał poprawnie.
Czy można pobrać wartość ciągu podaną przez użytkownika dla fromdate i todate i zmienić ją na pożądany format na poziomie VBA? czy jest jakiś inny sposób na osiągnięcie tego?