Notifications
Clear all

textbox salvar conteudo como Data

7 Posts
2 Usuários
0 Reactions
2,270 Visualizações
(@selmo)
Posts: 236
Reputable Member
Topic starter
 

Bom dia, boa tarde e boa noite galera.
Procurando pelo forum não encontrei uma solução para meu caso.
Utilizo um form para preencher minha planilha com novos dados, assim fica muito mais eficiente e prático.
Utilizo uma mascara de entrada para criar o formato de data na celula salva, mas somente a formatação é data, pois o conteudo continua sendo salvo como texto.
Preciso acrescentar algo a mais para que salve como data?

Private Sub TXT_SAIDA_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If Len(TXT_SAIDA) = 2 Then
TXT_SAIDA.Text = TXT_SAIDA.Text + "/"
End If
If Len(TXT_SAIDA) = 5 Then
TXT_SAIDA.Text = TXT_SAIDA.Text + "/"
End If
End Sub
Private Sub txt_saida_Exit(ByVal Cancel As MSForms.ReturnBoolean)
TXT_SAIDA = Format(TXT_SAIDA, "dd/mm/yyyy")
End Sub
 
Postado : 17/10/2013 3:56 am
(@wagner-morel-vidal-nobre)
Posts: 4063
Famed Member
 

selmo,

Bom Dia!

Supondo que você deseja inserir o conteúdo da caixa de texto chamada TXT_SAIDA na célula A1 da planilha, após clicar no botão de comando que insere os dados. Você coloca a seguinte linha de comando, no evento clique desse botão:

    Range("A1").Value = CDate(TXT_SAIDA.Text)
 
Postado : 17/10/2013 5:06 am
(@selmo)
Posts: 236
Reputable Member
Topic starter
 

O código que utilizo é esse

Private Sub BTN_SALVAR_Click()
    UltimaLinha = Sheets("NF_SAIDA").Cells(Cells.Rows.Count, 1).End(xlUp).Row + 1
    If UltimaLinha < 3 Then UltimaLinha = 3
    Application.DisplayAlerts = False
    'VERIFICA SE O CONTEUDO DA TEXTBOX NF_SAIDA É REPETIDO, SE FOR BLOQUEIA O SALVAMENTO DO FORM
    For i = 3 To UltimaLinha
        If Sheets("NF_SAIDA").Range("C" & i).Value = TXT_NOTAFISCAL.Text Then
            MsgBox "Essa Nota Fiscal já está Cadastrada!", vbCritical, "ERRO"
            TXT_NOTAFISCAL.Text = ""
            TXT_NOTAFISCAL.SetFocus
            Exit Sub
        End If
    Next
    'SALVA O CONTEUDO DAS TEXT NAS ULTIMAS CELULAS VAZIAS DAS COLUNAS ESPECIFICADAS
    Sheets("NF_SAIDA").Range("A" & UltimaLinha).Value = TXT_SAIDA.Text
    Sheets("NF_SAIDA").Range("B" & UltimaLinha).Value = TXT_EMISSAO.Text
    Sheets("NF_SAIDA").Range("C" & UltimaLinha).Value = TXT_NOTAFISCAL.Text
    Sheets("NF_SAIDA").Range("D" & UltimaLinha).Value = txtInput.Text
    Sheets("NF_SAIDA").Range("E" & UltimaLinha).Value = TXT_VOLUMES.Text
    Sheets("NF_SAIDA").Range("F" & UltimaLinha).Value = CMB_TRANSPORTADORA.Text
    Sheets("NF_SAIDA").Range("g" & UltimaLinha).Value = LISTBOX1.Text
    Sheets("NF_SAIDA").Range("H" & UltimaLinha).Value = TXT_OBSERVAÇOES.Text
    MsgBox "Dados salvos com Sucesso!", vbDefaultButton1, "SALVAR"
    TXT_EMISSAO.Text = "": TXT_NOTAFISCAL.Text = "": txtInput.Text = "": TXT_VOLUMES.Text = "": TXT_OBSERVAÇOES.Text = ""
    TXT_NOTAFISCAL.SetFocus
    Application.DisplayAlerts = True
    
End Sub

como poderia estar adaptando para que s]convertesse o campo de data?

 
Postado : 17/10/2013 5:17 am
(@wagner-morel-vidal-nobre)
Posts: 4063
Famed Member
 

Este:

    Private Sub BTN_SALVAR_Click()
        UltimaLinha = Sheets("NF_SAIDA").Cells(Cells.Rows.Count, 1).End(xlUp).Row + 1
        If UltimaLinha < 3 Then UltimaLinha = 3
        Application.DisplayAlerts = False
        'VERIFICA SE O CONTEUDO DA TEXTBOX NF_SAIDA É REPETIDO, SE FOR BLOQUEIA O SALVAMENTO DO FORM
        For i = 3 To UltimaLinha
            If Sheets("NF_SAIDA").Range("C" & i).Value = TXT_NOTAFISCAL.Text Then
                MsgBox "Essa Nota Fiscal já está Cadastrada!", vbCritical, "ERRO"
                TXT_NOTAFISCAL.Text = ""
                TXT_NOTAFISCAL.SetFocus
                Exit Sub
            End If
        Next
        'SALVA O CONTEUDO DAS TEXT NAS ULTIMAS CELULAS VAZIAS DAS COLUNAS ESPECIFICADAS
        Sheets("NF_SAIDA").Range("A" & UltimaLinha).Value = CDate(TXT_SAIDA.Text)
        Sheets("NF_SAIDA").Range("B" & UltimaLinha).Value = TXT_EMISSAO.Text
        Sheets("NF_SAIDA").Range("C" & UltimaLinha).Value = TXT_NOTAFISCAL.Text
        Sheets("NF_SAIDA").Range("D" & UltimaLinha).Value = txtInput.Text
        Sheets("NF_SAIDA").Range("E" & UltimaLinha).Value = TXT_VOLUMES.Text
        Sheets("NF_SAIDA").Range("F" & UltimaLinha).Value = CMB_TRANSPORTADORA.Text
        Sheets("NF_SAIDA").Range("g" & UltimaLinha).Value = LISTBOX1.Text
        Sheets("NF_SAIDA").Range("H" & UltimaLinha).Value = TXT_OBSERVAÇOES.Text
        MsgBox "Dados salvos com Sucesso!", vbDefaultButton1, "SALVAR"
        TXT_EMISSAO.Text = "": TXT_NOTAFISCAL.Text = "": txtInput.Text = "": TXT_VOLUMES.Text = "": TXT_OBSERVAÇOES.Text = ""
        TXT_NOTAFISCAL.SetFocus
        Application.DisplayAlerts = True
       
    End Sub
 
Postado : 17/10/2013 5:35 am
(@selmo)
Posts: 236
Reputable Member
Topic starter
 

Verifique a planilha NF_SAIDA, o filtro ainda identifica o campo como texto :(

 
Postado : 17/10/2013 7:02 am
(@selmo)
Posts: 236
Reputable Member
Topic starter
 

falha minha, errei ao refazer o código, funcionou perfeitamente, valeu mesmo :D
mais uma pergunta somente rs, para salvar o campo de volumes como numero, seria possivel usar uma conversão semelhante?

 
Postado : 17/10/2013 8:44 am
(@wagner-morel-vidal-nobre)
Posts: 4063
Famed Member
 

Sim.

ao invés de utilizar a função CDate, utilize CInt, Ccur, Cdec ou CDbl conforme o que você desejar. Selecione a palavra CDate em seu código e pressione F1 que o VBA vai lhe mostrar todas as funções de conversão disponíveis.

 
Postado : 17/10/2013 1:11 pm