none
VBA excel 2013 - Editar dados selecionados RRS feed

  • Pergunta

  • Boa noite a todos,

    Sou iniciante.

    Quando seleciono o nome na caixa de combinação preenche os campos do formulário certinho.

    Mas se eu clicar para salvar cria outro registro.

    Tenho o seguinte código abaixo e gostaria de saber como fazer para salvar a alteração feita.

    Gostaria que o código mostrasse que já existe o registro e salve a alteração se o usuário quiser. Quando clicado no botão salvar.

    Private Sub SALVAR_Click()

    If NOME = "" And ENDERECO = "" And BAIRRO = "" And CEP = "" And CIDADE = "" And _
    UF = "" And DTNASC = "" And RG = "" And CPF = "" And TELRES = "" And _
    TELCOM = "" And CEL = "" And EMAIL = "" Then

    MsgBox "Campos em Branco"
    NOME.SetFocus
    Else

    'TR é total de registro da planilha
    TR = Worksheets("CadastroAluno").UsedRange.Rows.Count + 1

    Worksheets("CadastroAluno").Select

    Cells(TR, 1) = NOME
    Cells(TR, 2) = ENDERECO
    Cells(TR, 3) = BAIRRO
    Cells(TR, 4) = CEP
    Cells(TR, 5) = CIDADE
    Cells(TR, 6) = UF
    Cells(TR, 7) = DTNASC
    Cells(TR, 8) = RG
    Cells(TR, 9) = CPF
    Cells(TR, 10) = TELRES
    Cells(TR, 11) = TELCOM
    Cells(TR, 12) = CEL
    Cells(TR, 13) = EMAIL

    MsgBox "Dados gravados com sucesso"

    NOME = ""
    ENDERECO = ""
    BAIRRO = ""
    CEP = ""
    CIDADE = ""
    UF = ""
    DTNASC = ""
    RG = ""
    CPF = ""
    TELRES = ""
    TELCOM = ""
    CEL = ""
    EMAIL = ""
    LOCALIZAR = ""

    NOME.SetFocus

    'TR é total de registro da planilha
    TR = Worksheets("CadastroAluno").UsedRange.Rows.Count
    LOCALIZAR.RowSource = "cadastroaluno!a2:a" & TR
    End If

    ActiveWorkbook.Save

    End Sub

    terça-feira, 5 de abril de 2016 23:23

Respostas

  • Estou considrando que a coluna A (de nomes) possui apenas registros que não se repetem. Isso é fundamental para essa solução funcionar.

        'TR é total de registro da planilha ou a linha de um registro existente
        On Error Resume Next
        TR = WorksheetFunction.Match(NOME, ThisWorkbook.Worksheets("CadastroAluno").Columns("A"), 0)
        On Error GoTo 0
        If TR = 0 Then
            'Registro não existe
            TR = ThisWorkbook.Worksheets("CadastroAluno").UsedRange.Rows.Count + 1
        End If
    


    http://www.ambienteoffice.com.br - http://www.clarian.com.br

    quarta-feira, 6 de abril de 2016 18:21
    Moderador