locked
Problema em transformar celulas string em numeral RRS feed

  • Pergunta

  • Pessoal, Bom Dia!

     

    Estou com um problema em realizar um calculo em minha macro, pois o valor de uma célula que contem uma data está como string e outra célula está com o valor data como número, sendo assim não tenho como realizar um calculo entre elas.

     

    Já tentei realizar a conversão de valores da células com strings inserindo o valor 1 em uma outra célula, copiando e colando especial como multiplicação as strings por este valor. Copiando as strings e colando apenas valores em outra célula. Já criei um um Loop para realizar a multiplicação das células por 1.

     

    O mais estranho é que estes métodos acima funcionam quando a macro não está sendo executada, ou seja, quando eu executo estes métodos na mão.

     

    Outra forma de converter os valores Strings é indo célula a célula apertar F2 e pressionar o Enter, então estas células respondem e viram valores inteiros.

     

    Só para esclarecer, estes valores são retirados de um programa e vem no segunte formato "dd.mm.aaaa" então tenho que remover os pontos e inserir a "/". Segue abaixo o método utilizado na macro.

     

        STR_VAR = Format(Now, "yy")
        STR_VAR2 = Format(Now, "yyyy")
        Range("D2Big Smile" & FIML).Replace What:="." & STR_VAR & ".", Replacement:="/" & STR_VAR & ".", LookAt:=xlPart, _
            SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
            ReplaceFormat:=False
        Range("D2Big Smile" & FIML).Replace What:="." & STR_VAR, Replacement:="." & STR_VAR2, LookAt:=xlPart, _
            SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
            ReplaceFormat:=False
        STR_VAR = Format(DateAdd("yyyy", -1, Date), "yy")
        STR_VAR2 = Format(DateAdd("yyyy", -1, Date), "yyyy")
        Range("D2Big Smile" & FIML).Replace What:="." & STR_VAR & ".", Replacement:="/" & STR_VAR & ".", LookAt:=xlPart, _
            SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
            ReplaceFormat:=False
        Range("D2Big Smile" & FIML).Replace What:="." & STR_VAR, Replacement:="." & STR_VAR2, LookAt:=xlPart, _
            SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
            ReplaceFormat:=False
        Range("D2Big Smile" & FIML).Replace What:="." & STR_VAR, Replacement:="." & STR_VAR2, LookAt:=xlPart, _
            SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
            ReplaceFormat:=False
        Range("D2Big Smile" & FIML).Replace What:=".", Replacement:="/", LookAt:=xlPart, _
            SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
            ReplaceFormat:=False

     

    Resumindo, preciso de uma ajuda em como solucionar esta falha na macro, pois deveria funcionar uma vez que sem rodar a macro funciona perfeitamente.

     

    Obrigado pela ajuda.

     

    Grato,

    sexta-feira, 20 de junho de 2008 12:05

Respostas

  • Hideo,

     

    Obrigado pela ajuda!

     

    Consegui resolver o problema com a função Valores, conforme informado abaixo:

     

    For CONT6 = 2 To FIML
            Cells(CONT6, (FIMC + 1)).Select
            ActiveCell.FormulaR1C1 = "=VALUE(RC[-2])"
            Cells(CONT6, (FIMC + 1)).Copy
            Cells(CONT6, (FIMC + 1)).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
            Cells(CONT6, (FIMC + 1)).Copy
            Range("D" & CONT6).PasteSpecial xlPasteAll
            Range("D" & CONT6).Select
            Selection.NumberFormat = "dd/mm/yyyy"
            Cells(CONT6, (FIMC + 1)).Delete
        Next

     

     

    Mais uma vez obrigado pela ajuda e atenção.

     

     

    Grato.

    sexta-feira, 20 de junho de 2008 14:03

Todas as Respostas

  •  

    Utilize o VAL, para extrair valores numéricos,

     

    Val(Variavel)

     

    Ou

     

    CDate(Variavel), transforma o texto em data

    sexta-feira, 20 de junho de 2008 13:40
  • Hideo,

     

    Obrigado pela ajuda!

     

    Consegui resolver o problema com a função Valores, conforme informado abaixo:

     

    For CONT6 = 2 To FIML
            Cells(CONT6, (FIMC + 1)).Select
            ActiveCell.FormulaR1C1 = "=VALUE(RC[-2])"
            Cells(CONT6, (FIMC + 1)).Copy
            Cells(CONT6, (FIMC + 1)).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
            Cells(CONT6, (FIMC + 1)).Copy
            Range("D" & CONT6).PasteSpecial xlPasteAll
            Range("D" & CONT6).Select
            Selection.NumberFormat = "dd/mm/yyyy"
            Cells(CONT6, (FIMC + 1)).Delete
        Next

     

     

    Mais uma vez obrigado pela ajuda e atenção.

     

     

    Grato.

    sexta-feira, 20 de junho de 2008 14:03