Notifications
Clear all

Ajuda com rotina Botão Cadastrar

4 Posts
3 Usuários
0 Reactions
855 Visualizações
(@bilokas)
Posts: 168
Estimable Member
Topic starter
 

Olá amigos, gostaria de desejar um feliz 2014 à todos!

Bom, alguém sabe dizer se há algo errado na rotina abaixo, no que diz respeito ao código pular a linha para gravar os dados sem sobrescrever os dados anteriores. Porque é o que ele está fazendo nesse momento (gravando só na linha 2).
Fica no frmCadastro

Private Sub botao_cadastrar_Click()
Dim lin As Integer

If Range("A3") = "" Then
lin = 2
    Else
    Range("A1").Select
    Selection.End(xlDown).Select
    lin = ActiveCell.Row + 1
End If
    'Dados pessoais
    Sheets("dados").Cells(lin, 1).Value = Me.txt_NomeCompleto.Value
    Sheets("dados").Cells(lin, 2).Value = Me.txt_IDFuncional.Value
    Sheets("dados").Cells(lin, 3).Value = Me.txt_Lotacao.Value
    Sheets("dados").Cells(lin, 4).Value = Me.txt_Cargo.Value
    'Status do servidor
    If OptionButton_Ativo.Value = True Then
        Sheets("dados").Cells(lin, 5).Value = "ATIVO"
    Else
    If OptionButton_Licenca.Value = True Then
        Sheets("dados").Cells(lin, 5).Value = "LICENÇA"
    Else
    If OptionButton_Aposentado.Value = True Then
        Sheets("dados").Cells(lin, 5).Value = "APOSENTADO"
    End If
    End If
    End If
    'Data do status do servidor
    If OptionButton_Ativo.Value = True Then
        Sheets("dados").Cells(lin, 6).Value = Me.txt_Data_Ativo.Value
    Else
    If OptionButton_Licenca.Value = True Then
        Sheets("dados").Cells(lin, 7).Value = Me.txt_Data_Licenca.Value
    Else
    If OptionButton_Aposentado.Value = True Then
        Sheets("dados").Cells(lin, 8).Value = Me.txt_Data_Aposentado.Value
    End If
    End If
    End If
    'Período indeferido
    If OptionButton_PI_Sim.Value = True Then
        Sheets("dados").Cells(lin, 9).Value = "SIM"
    Else
    If OptionButton_PI_Nao.Value = True Then
        Sheets("dados").Cells(lin, 9).Value = "NÃO"
    End If
    End If
    'Pelo Processo
    Sheets("dados").Cells(lin, 10).Value = Me.txt_Pelo_Processo.Value
    'Contato em dobro
    If OptionButton_CD_Sim.Value = True Then
        Sheets("dados").Cells(lin, 11).Value = "SIM"
    Else
    If OptionButton_CD_Nao.Value = True Then
        Sheets("dados").Cells(lin, 11).Value = "NÃO"
    End If
    End If

    'Exercício 1
    Sheets("dados").Cells(lin, 12).Value = Me.txt_Dias_Gozados_Exercicio1.Value
    Sheets("dados").Cells(lin, 13).Value = Me.ComboBox_Exercicio1_Gozado.Value
    Sheets("dados").Cells(lin, 14).Value = Me.txt_Dias_A_Gozar_Exercicio1.Value
    Sheets("dados").Cells(lin, 15).Value = Me.ComboBox_Exercicio1_A_Gozar.Value
    'Exercício 2
    Sheets("dados").Cells(lin, 16).Value = Me.txt_Dias_Gozados_Exercicio2.Value
    Sheets("dados").Cells(lin, 17).Value = Me.ComboBox_Exercicio2_Gozado.Value
    Sheets("dados").Cells(lin, 18).Value = Me.txt_Dias_A_Gozar_Exercicio2.Value
    Sheets("dados").Cells(lin, 19).Value = Me.ComboBox_Exercicio2_A_Gozar.Value
    'Exercício 3
    Sheets("dados").Cells(lin, 20).Value = Me.txt_Dias_Gozados_Exercicio3.Value
    Sheets("dados").Cells(lin, 21).Value = Me.ComboBox_Exercicio3_Gozado.Value
    Sheets("dados").Cells(lin, 22).Value = Me.txt_Dias_A_Gozar_Exercicio3.Value
    Sheets("dados").Cells(lin, 23).Value = Me.ComboBox_Exercicio3_A_Gozar.Value
    'Exercício 4
    Sheets("dados").Cells(lin, 24).Value = Me.txt_Dias_Gozados_Exercicio4.Value
    Sheets("dados").Cells(lin, 25).Value = Me.ComboBox_Exercicio4_Gozado.Value
    Sheets("dados").Cells(lin, 26).Value = Me.txt_Dias_A_Gozar_Exercicio4.Value
    Sheets("dados").Cells(lin, 27).Value = Me.ComboBox_Exercicio4_A_Gozar.Value
    'Exercício 5
    Sheets("dados").Cells(lin, 28).Value = Me.txt_Dias_Gozados_Exercicio5.Value
    Sheets("dados").Cells(lin, 29).Value = Me.ComboBox_Exercicio5_Gozado.Value
    Sheets("dados").Cells(lin, 30).Value = Me.txt_Dias_A_Gozar_Exercicio5.Value
    Sheets("dados").Cells(lin, 31).Value = Me.ComboBox_Exercicio5_A_Gozar.Value
    'Exercício 6
    Sheets("dados").Cells(lin, 32).Value = Me.txt_Dias_Gozados_Exercicio6.Value
    Sheets("dados").Cells(lin, 33).Value = Me.ComboBox_Exercicio6_Gozado.Value
    Sheets("dados").Cells(lin, 34).Value = Me.txt_Dias_A_Gozar_Exercicio6.Value
    Sheets("dados").Cells(lin, 35).Value = Me.ComboBox_Exercicio6_A_Gozar.Value
    'Exercício 7
    Sheets("dados").Cells(lin, 36).Value = Me.txt_Dias_Gozados_Exercicio7.Value
    Sheets("dados").Cells(lin, 37).Value = Me.ComboBox_Exercicio7_Gozado.Value
    Sheets("dados").Cells(lin, 38).Value = Me.txt_Dias_A_Gozar_Exercicio7.Value
    Sheets("dados").Cells(lin, 39).Value = Me.ComboBox_Exercicio7_A_Gozar.Value
    'Total de dias gozados e à gozar
    Sheets("dados").Cells(lin, 40).Value = Val(txt_Dias_Gozados_Exercicio1.Text) + Val(txt_Dias_Gozados_Exercicio2.Text) + Val(txt_Dias_Gozados_Exercicio3.Text) + Val(txt_Dias_Gozados_Exercicio4.Text) + Val(txt_Dias_Gozados_Exercicio5.Text) + Val(txt_Dias_Gozados_Exercicio6.Text) + Val(txt_Dias_Gozados_Exercicio7.Text)
    Sheets("dados").Cells(lin, 41).Value = Val(txt_Dias_A_Gozar_Exercicio1.Text) + Val(txt_Dias_A_Gozar_Exercicio2.Text) + Val(txt_Dias_A_Gozar_Exercicio3.Text) + Val(txt_Dias_A_Gozar_Exercicio4.Text) + Val(txt_Dias_A_Gozar_Exercicio5.Text) + Val(txt_Dias_A_Gozar_Exercicio6.Text) + Val(txt_Dias_A_Gozar_Exercicio7.Text)

MsgBox "Cadastro realizado com sucesso.", vbInformation, "SUCESSO!"
Unload Me
frmCadastro.Show
End Sub


DGAF / DVGD - Divisão de Gestão de Documentos
Rafael A. Guimarães
[email protected]

 
Postado : 13/01/2014 11:30 am
depoisteconto
(@depoisteconto)
Posts: 183
Estimable Member
 

Dá uma olha nesse trecho:

If Range("A3") = "" Then
lin = 2
    Else
    Range("A1").Select
    Selection.End(xlDown).Select
    lin = ActiveCell.Row + 1
End If

Ele diz assim: Se a linha 3 estiver vazia então a variável Lin vale 2. Convenhamos, dessa forma ela sempre vai ler a mesma coisa.

Eu a substituiria por Lin = Sheets("dados").Range("A" & Rows.Count).End(xlUp).Row, assim saberia sempre onde está meu último registro.

Então atribuo Lin = Lin + 1

Dessa forma, toda vez que a rotina do botão cadastrar for executada, encontrará a próxima linha disponível e salvará nela.

Testa ae.

At

 
Postado : 13/01/2014 11:54 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Alem da proposta anterior, nota-se que seu cadastro inicia à partir da linha 2, porem o if "menciona" a linha 3, creio que por isso não avança.
altere conforme abaixo e veja se atende:

If Range("A2") = "" Then
lin = 2
    Else
.....

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 13/01/2014 12:08 pm
(@bilokas)
Posts: 168
Estimable Member
Topic starter
 

Funcionou bem a dica do amigo "depoisteconto".

É verdade Reinaldo, Não sei como não reparei isso.

Obrigado pelas respostas. Vocês estão sempre ajudando.


DGAF / DVGD - Divisão de Gestão de Documentos
Rafael A. Guimarães
[email protected]

 
Postado : 13/01/2014 12:12 pm