Notifications
Clear all

Macro para Gravar dados na outra aba

6 Posts
2 Usuários
0 Reactions
1,951 Visualizações
willianrc
(@willianrc)
Posts: 0
Trusted Member
Topic starter
 

Olá amigos,
Estou desenvolvendo uma planilha,
Alguem sabe uma macro para gravar os dados na base de dados linha a linha????

Veja o anexo.
Obrigado

 
Postado : 14/04/2020 7:39 am
willianrc
(@willianrc)
Posts: 0
Trusted Member
Topic starter
 

srobles

Este deu erro em tempo de execuçao 13':
Tipos incompatíveis
Na linha : .Range("T76") = CCur(dadosCadastrais(8))
do codigo abaixo

Sub pesquisaAlunoListBox(ByVal nomeAluno As String)

With planConsulta
        .Range("T76") = CCur(dadosCadastrais(8))
    End With
End Sub
 
Postado : 14/04/2020 3:27 pm
(@srobles)
Posts: 231
Estimable Member
 

willian,

Repare nos módulos adicionados, que existem duas rotinas : Sub pesquisaAluno e Sub pesquisaAlunoListBox.

Ambas, ao encontrar o registro na guia Dados, retornam o numero da linha cujo registro foi encontrado.

Com base nessa variável (linhaRegistro), basta criar outra Sub, por exemplo :

Sub editaAluno()
    Call definicoesArquivo
    
    If MsgBox("Deseja alterar o registro selecionado?", vbQuestion + vbYesNo, "Editar cadastro") = vbYes Then
    
        Erase dadosCadastrais
        
        With planConsulta
            dadosCadastrais(1) = .Range("F17")
            dadosCadastrais(2) = .Range("S17")
            dadosCadastrais(3) = .Range("S29")
            dadosCadastrais(4) = .Range("S40")
            dadosCadastrais(5) = .Range("T52")
            dadosCadastrais(6) = .Range("T64")
            dadosCadastrais(7) = .Range("AY64")
            dadosCadastrais(8) = .Range("T76")
        End With
        
        With baseDados
            .Cells(linhaRegistro, 1) = UCase(dadosCadastrais(1))
            .Cells(linhaRegistro, 2) = UCase(dadosCadastrais(2))
            .Cells(linhaRegistro, 3) = UCase(dadosCadastrais(3))
            .Cells(linhaRegistro, 4) = UCase(dadosCadastrais(4))
            .Cells(linhaRegistro, 5) = UCase(dadosCadastrais(5))
            .Cells(linhaRegistro, 6) = UCase(dadosCadastrais(6))
            .Cells(linhaRegistro, 7) = UCase(dadosCadastrais(7))
            .Cells(linhaRegistro, 8) = CCur(dadosCadastrais(8))
        End With
        
        MsgBox "Cadastro alterado com sucesso!", vbInformation, "Editar cadastro"
        
        Call limparCamposConsulta
        
    End If
End Sub

E assim, atribuir a macro ao botão.

Espero ter ajudado.

Abs.

Saulo Robles

 
Postado : 14/04/2020 3:32 pm
(@srobles)
Posts: 231
Estimable Member
 

willian,

Este erro está ocorrendo, acredito eu, quando a rotina citada retorna os dados, ela está tentando converter possivelmente um valor nulo (em branco) em formato moeda (com R$).

Em meus teste aqui, não enfrentei este problema. Vou analisar, e havendo novidades, retorno com a solução.

Espero ter ajudado.

Abs.

Saulo Robles

 
Postado : 14/04/2020 3:36 pm
(@srobles)
Posts: 231
Estimable Member
 

willian,

Segue modelo atualizado.

Favor, teste e retorne.

Espero ter ajudado.

Abs.

Saulo Robles

 
Postado : 14/04/2020 3:52 pm
willianrc
(@willianrc)
Posts: 0
Trusted Member
Topic starter
 

PERFEITO.
Muito Obrigadoo! Deus te abençoe

 
Postado : 14/04/2020 5:53 pm