Armazena os dados na próxima linha disponivel do formulários

Boa tarde

Estou criando um formulário no calc onde salva os dados em uma plan2.
todos os dados estão sendo saldo, porem a data esta indo como texto ex: ('15/06/2016), como corrigir?

Sub Guardar_Datos()
'-------------------------------------------------------------------
   Dim xDato As Variant, nRow As Long

   If MsgBox( "Você deseja salvar as alterações?", 33, "Diálogo en Calc" ) =  1 Then
      nRow = UltimaFila( 1 )
      With oDialogo.Model
         xDato = .DateField1.Text
         ThisComponent.Sheets(1).GetCellByPosition(0,nRow).SetFormula( xDato ) "estas que esta dando erro!!!!!"
     xDato = .TextField2.Text
     ThisComponent.Sheets(1).GetCellByPosition(1,nRow).SetFormula( xDato )

     xDato = .TextField3.Text
     ThisComponent.Sheets(1).GetCellByPosition(2,nRow).SetFormula( xDato )
     
     xDato = .TextField4.Text
     ThisComponent.Sheets(1).GetCellByPosition(3,nRow).SetFormula( xDato )
     
     xDato = .TextField5.Text
     ThisComponent.Sheets(1).GetCellByPosition(5,nRow).SetFormula( xDato )
     
     xDato = .TextField6.Text
     ThisComponent.Sheets(1).GetCellByPosition(6,nRow).SetFormula( xDato )
     
     xDato = .TextField7.Text
     ThisComponent.Sheets(1).GetCellByPosition(7,nRow).SetFormula( xDato )
     
     xDato = .TextField8.Text
     ThisComponent.Sheets(1).GetCellByPosition(8,nRow).SetFormula( xDato )
     
     xDato = .TextField9.Text
     ThisComponent.Sheets(1).GetCellByPosition(9,nRow).SetFormula( xDato )
     
     xDato = .TextField10.Text
     ThisComponent.Sheets(1).GetCellByPosition(10,nRow).SetFormula( xDato )
     

     xDato = .ComboBox1.Text
     ThisComponent.Sheets(1).GetCellByPosition(4,nRow).SetFormula( xDato )


     .DateField1.Text = ""
     .TextField2.Text = ""
     .TextField3.Text = ""
     .TextField4.Text = ""
     .TextField5.Text = ""
     .TextField6.Text = ""
     .TextField7.Text = ""
     .TextField8.Text = ""
     .TextField9.Text = ""
     .TextField10.Text = ""
     
     
     .ComboBox1.Text = ""
     End With
   End If
End Sub

Ops… Não sei como corrigir a macro acima, mas dou uma solução mais simples, com macro feita pelo gravador, vide arquivo. Uso Win10 + LibO 5.2.0.4

Gilberto
Bom dia
Esta resposta também atende, eu perguntei ao Antonio se tem como posta o arquivo completo para melhorar ele mais não sei se pode!!

obrigado pela resposta

Bom dia,


Para corrigir você deve inserir a data na célula como um valor. Então, você pode usar a função DATEVALUE() do LibO Basic para converter a cadeia de texto extraída do Campo de data para um valor de data.

Além disso, SetFormula deve ser usado para quando se deseja inserir uma fórmula na célula. Para o seu caso, o correto seria:

  • SetValue() → Para inserir um valor
  • SetString() → Para inserir um texto

Portanto, substitua a linha que está dando erro para:
xDato = .DateField1.Text
ThisComponent.Sheets(1).GetCellByPosition(0,nRow).SetValue( DateValue(xDato) )

E para reparar o uso indevido do SetFormula, altere as demais linhas como a seguinte:
xDato = .TextField2.Text
ThisComponent.Sheets(1).GetCellByPosition(1,nRow).SetString( xDato )

Atte,
Grafeno

Obrigado
pela ajuda
foi realizado a correção e esta corrigido
gostaria de postar o arquivo completo para melhora ele mais ainda, mais não sei se pode!
Obrigado

@Jamilson, é possível sim postar os arquivos no AskLibO. Mas, para isso a pessoa precisa de um certo número de karma (pontos). Aqui diz que é 3 de Karma. Então, você poderá anexar (ícone de clipe) seu arquivo na sua próxima pergunta. Atte, Grafeno.

Bom dia, outra solução é utilizar a função CDate() antes da caixa de data, por exemplo:
ThisComponent.Sheets(1).GetCellByPosition(0,nRow).SetValue(CDate(xDato) )