Alterando um valor de string para o formato de data no VBA

1

Estou trabalhando em um script VBA no Excel. O seguinte é o código em que estou trabalhando.

    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

Neste Código, eu uso uma condição de comparar a data interna com a data e a data. Mas a data e a data são definidas pelo usuário. Eles estão no formato de string. Mas a data interna está em um formato personalizado ("dd / mm / aaaa h: mm") conforme é recuperada do sql. Então eu não posso mudar o formato da data interna. Portanto, eu tenho que mudar o formato de fromdate e todate, para que a condição funcione corretamente.

É possível obter o valor de string fornecido pelo usuário para fromdate e todate e alterá-lo para o formato desejado no nível do VBA? ou existe alguma outra maneira de conseguir isso?

    
por Ramya 08.10.2014 / 05:45

1 resposta

1

A função CDate cria uma data a partir de qualquer data expressão válida

Na ajuda do Excel vba:

date expression

Any expression that can be interpreted as a date, including date literals, numbers that look like dates, strings that look like dates, and dates returned from functions. A date expression is limited to numbers or strings, in any combination, that can represent a date from January 1, 100 – December 31, 9999.

Dates are stored as part of a real number. Values to the left of the decimal represent the date; values to the right of the decimal represent the time. Negative numbers represent dates prior to December 30, 1899.

    
por 08.10.2014 / 07:25