Vídeo recomendado
https://youtu.be/diWPPPhW-9E

Correção de código

Fórum para dúvidas sobre os fundamentos da linguagem de programação Visual Basic no contexto do VBA
walber luiz
Colaborador
Colaborador
Mensagens: 33
Registrado em: Sáb Dez 17, 2016 9:26 pm

Correção de código

Mensagem por walber luiz »

Boa tarde.

Uso este código para salvar alterações na planilha, mas não funciona para as alterações de data.

Private Sub CmdPlan7_Click()

Lin = Sheets("Plan7").Cells(Cells.Rows.Count, 1).End(xlUp).Row
If Lin < 2 Then Lin = 2

Application.ScreenUpdating = False
Sheets("Plan7").Activate

For i = 2 To Lin
If Range("A" & i).Value = CDate(TxtData.Text) Then
Cells(i, 1).Value = CDate(TxtData.Text)
Cells(i, 2).Value = Format(TxtValor.Text, "R$ 0.00#,##")
Cells(i, 3).Value = TxtDescrição.Text
Cells(i, 4).Value = TxtObservação.Text
Exit For
End If
Next

TxtData.Text = ""
TxtValor.Text = ""
TxtDescrição.Text = ""
TxtObservação.Text = ""

Application.ScreenUpdating = True

Call BtnPlan7_Click

End Sub
Anexos
Modelo.zip
(46 KiB) Baixado 200 vezes


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Wagner Morel
Manda bem
Manda bem
Mensagens: 107
Registrado em: Qua Nov 29, 2017 11:51 am
Localização: Fortaleza - CE

Re: Correção de código

Mensagem por Wagner Morel »

walber luiz,

Boa tarde!

Não entendi a lógica da sua programação... Como você quer que a data seja alterada se a primeira linha de comando dentro do for faz uma verificação se as datas são iguais? Ou seja, se as datas forem diferentes (para poder ser alterada), nunca que vai entrar dentro do IF. Concorda?

Código: Selecionar todos

If Range("A" & i).Value = CDate(TxtData.Text) Then


walber luiz
Colaborador
Colaborador
Mensagens: 33
Registrado em: Sáb Dez 17, 2016 9:26 pm

Re: Correção de código

Mensagem por walber luiz »

Boa tarde.

Não entendo muito sobre isso, mas como eu posso fazer com que a data que estiver na textbox seja modificada?


Wagner Morel
Manda bem
Manda bem
Mensagens: 107
Registrado em: Qua Nov 29, 2017 11:51 am
Localização: Fortaleza - CE

Re: Correção de código

Mensagem por Wagner Morel »

walber luiz,

Boa tarde!

Veja se é assim.
Anexos
Modelo.zip
(25.05 KiB) Baixado 212 vezes


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


walber luiz
Colaborador
Colaborador
Mensagens: 33
Registrado em: Sáb Dez 17, 2016 9:26 pm

Re: Correção de código

Mensagem por walber luiz »

Boa noite

O código quando eu coloquei na minha planilha não funcionou, em vez dele substituir a linha correspondente,
ele faz é criar uma nova linha com a alteração.
Estou anexando a planilha com os valores retirado da original, que quando coloquei os valores e fiço a alteração apresentou o mesmo problema.
Anexos
Modelo.zip
(24.43 KiB) Baixado 195 vezes


Wagner Morel
Manda bem
Manda bem
Mensagens: 107
Registrado em: Qua Nov 29, 2017 11:51 am
Localização: Fortaleza - CE

Re: Correção de código

Mensagem por Wagner Morel »

walber luiz,

Boa tarde!

Você tem toda razão amigo! Eu havia entendido de forma equivocada. Creio que agora deva estar certo.

Veja se é assim.
Anexos
Modelo.zip
(27.93 KiB) Baixado 199 vezes


walber luiz
Colaborador
Colaborador
Mensagens: 33
Registrado em: Sáb Dez 17, 2016 9:26 pm

Re: Correção de código

Mensagem por walber luiz »

Boa noite Wagner

Estou com dificuldades em adaptar o seu código no meu projeto, porque uso varias planilhas no mesmo formulário, com este código.

Código: Selecionar todos

Private Sub ListView1_ItemClick(ByVal Item As MSComctlLib.ListItem)
    Dim i As Long
    Dim UltimaLinha As Long


    TxtData = ListView1.SelectedItem.ListSubItems.Item(1)
    TxtValor = ListView1.SelectedItem.ListSubItems.Item(2)
    TxtDescrição = ListView1.SelectedItem.ListSubItems.Item(3)
    
    UltimaLinha = Sheets("Plan7").Cells(Cells.Rows.Count, "XFD").End(xlUp).Row
    If UltimaLinha < 1 Then UltimaLinha = 1


    For i = 1 To UltimaLinha
        If TxtData.Text = Sheets("Plan7").Range("XFD" & i).Value Then
            Data_A_Procurar = CDate(Sheets("Plan7").Range("XFD" & i).Value)
            Exit For
        End If
    Next
End Sub
Anexos
MODELO.zip
(84 KiB) Baixado 184 vezes


Wagner Morel
Manda bem
Manda bem
Mensagens: 107
Registrado em: Qua Nov 29, 2017 11:51 am
Localização: Fortaleza - CE

Re: Correção de código

Mensagem por Wagner Morel »

Ok. Fica difícil, nesse caso, ajudar. Vou tentar lhe explicar o que fiz e você verifica o que pode fazer por aí pois não dá para ajudar à distância.
Para poder alterar a data (como você pediu inicialmente) tive que utilizar de um artifício. Na hora em que o usuário seleciona um item do ListView e clica no botão correspondente a Planilha (no exemplo que você havia enviado era a PLan7), automaticamente os dados correspondentes são carregados para as caixas de texto. Nesse momento, fiz a inserção automática de todas as datas que são carregadas no ListView para a última coluna da Plan7 (coluna XFD).

Quando o usuário seleciona a caixa de texto da data que será alterada, eu gravo isso em uma variável gloval chamada Data_A_Alterar que depois é checada quando o usuário clica no botão para fazer a alteração.


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Responder