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

Duplicar Dados Formulário

Esclarecimentos e dúvidas sob o Modelo de Aplicativo de Cadastro em VBA no Microsoft Excel publicado no site e blog http://www.tomasvasquez.com.br
Avatar do usuário
Valderei
Colaborador
Colaborador
Mensagens: 47
Registrado em: Qui Dez 27, 2012 9:57 pm
Localização: Caxias do Sul - RS

Duplicar Dados Formulário

Mensagem por Valderei »

E aí pessoal, tudo bem!!
Eu uso o modelo de aplicativo criado pelo Tomás na empresa onde trabalho e já fiz várias adaptações nele, e hoje, me surgiu uma necessidade que até então, não havia pensado.
Hoje eu uso ele para registrar alguns atendimentos de clientes, e normalmente a NF do cliente, possuí vários itens, e até então, eu vinha redigitando alguns dados para gerar mais de um atendimento para o mesmo cliente e mesma NF, porém, as coisas começaram a apertar e já não tenho o mesmo tempo de antes.

Preciso então, de um auxílio de vocês para que, ao selecionar um atendimento, eu possa clicar em um OptionButton de nome "Copiar Dados" e que ele copiasse tudo que foi carregado no formulário e em seguida eu clique em Salvar e ele salve todos estes dados, porém em um novo ID.
Tentei algumas variações com os códigos já existentes no aplicativo, mas tem coisas que vão além do conhecimento ou do raciocínio do usuário.

Vocês poderiam me dar um auxílio nesta questão?

Obrigado e já agradeço a ajuda, pois sei que aqui, todos possuem outras tarefas além do fórum.

Ps. Eu fiz várias pesquisas no fórum sobre o assunto e não encontrei, mas caso tenha outro tópico com o mesmo tipo de dúvida, me avisem que fecho este o uso o anterior.


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.


Avatar do usuário
Valderei
Colaborador
Colaborador
Mensagens: 47
Registrado em: Qui Dez 27, 2012 9:57 pm
Localização: Caxias do Sul - RS

Re: Duplicar Dados Formulário [RESOLVIDO]

Mensagem por Valderei »

Pessoal, eu novamente.
Acho que só precisava compartilhar meu sofrimento com alguém.
Consegui adaptar alguns códigos para resolver meu caso.

Abaixo segue o código que usei, caso alguém tem interesse:
Parte 01

Código: Selecionar todos

   
    'Copiar Dados
    If optCopiarRegistro.Value Then
        Dim Answer As VbMsgBoxResult
        Answer = MsgBox("Deseja copiar os dados nº " & TextBoxID.Text & " ?", vbYesNo, "Duplicar Dados")
            If Answer = vbYes Then
            Sh1.Range(Sh1.Cells(indiceRegistro, colID), Sh1.Cells(indiceRegistro, colID)).EntireRow.Copy
            proximoId = PegaProximoId
            proximoIndice = Sh1.UsedRange.Rows.Count + 1
            Call SalvaRegistro(proximoId, proximoIndice)
            TextBoxID = proximoId
            lblMensagem.Caption = "Registro duplicado com sucesso"
            Application.CutCopyMode = False
            Unload Me
            frmCadastro.Show
            End If
    End If
    
Parte 02

Código: Selecionar todos

'===============================================================================================
Private Sub optCopiarRegistro_Click()
    If TextBoxID.Text <> vbNullString And TextBoxID.Text <> "" Then
        Call HabilitaControles
        Call DesabilitaBotoesAlteracao
        'Dá foco no Id do formulário
        TextBoxID.SetFocus
    Else
        lblMensagem.Caption = "Não há registro a ser copiado"
    End If
End Sub
'===============================================================================================



Diovanino Cassio
Colaborador
Colaborador
Mensagens: 53
Registrado em: Qua Mar 15, 2017 11:31 am

Re: Duplicar Dados Formulário

Mensagem por Diovanino Cassio »

Valderei,

Estou com um problema semelhante ao seu, mas no meu caso, eu necessito mudar na maioria das vezes, somente o dado do campo texto (Lote/Emb), ex.: 10.000/001. Mudo só os dados depois da /, isso para muitos registros.
Para tanto, criei a rotina de criação e salvamento de um novo registro, no evento BeforeUpdate, do campo Lote/Emb, pois facilita para o usuário, trabalhar somente com o enter.
Mas acontece que estou esbarrando em um problema, pois ao alterar o dado do campo Lote/Emb, um novo registro é salvo, mas o foco não volta para o campo em questão, sendo o cursor deslocado, para o próximo campo do formulário.

Abaixo, segue os códigos que esta rotina executa:

Código: Selecionar todos

Private Sub txt07_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
Dim proximoId As Long
Dim proximoIndice As Long
Dim Result As VbMsgBoxResult

    If cmdCopia.Enabled = True Then
    
        'Pega o próximo registro
         proximoId = PegaProximoId
        
               
        'atualiza o arquivo para pegar o próximo registro atualizado
         Call AtualizarArquivo(False)
         proximoIndice = wscadastro.UsedRange.Rows.Count + 1
        
        Call SalvaRegistro(proximoId, proximoIndice)
        txtRegistro = proximoId
        MsgBox "Cópia realizada com sucesso...!", vbExclamation, "SALVAMENTO"
        Me.txtRegistro = Format(txtRegistro, "0000")
	
	call cmdcopia_click
       
    End If
End Sub

Código: Selecionar todos

Private Sub cmdCopia_Click()
Dim proximoId As Long
Dim lngTime As Long
Dim i As Integer

cmdNovo.Enabled = False
cmdAlterar.Enabled = False
cmdExcluir.Enabled = False

Call HabilitaControles

'Busca o último registro
IndiceRegistro = wscadastro.UsedRange.Rows.Count
If IndiceRegistro > 1 Then
    Call CarregaRegistro
End If
Me.txt07.SetFocus
End Sub
Sds,


Diovanino Cassio
Colaborador
Colaborador
Mensagens: 53
Registrado em: Qua Mar 15, 2017 11:31 am

Re: Duplicar Dados Formulário

Mensagem por Diovanino Cassio »

Senhores,

A solução que eu encontrei para o meu caso, foi a de criar um novo campo texto no formulário, que só é acionado, quando clico no botão de cópia.
Coloquei o primeiro código mostrado acima, no evento KeyDown do mesmo.

Sds,


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