Primeiro - Língua Portuguesa
alterasse, pedisse, fizesse, localizasse, encontrasse...
Em vez de
altera-se, pede-se, faz-se, localiza-se, encontra-se...
Segundo - Identificação de erros
Dica: acostume-se a executar o código passo a passo, apertando F8. Muitos erros podem ser detectados dessa forma.
Terceiro - Lentidão no processamento
Dica: evite usar select e activecell, pois deixam o processamento mais lento.
Quando for obrigatório usar select, faça desta forma:
Sub MinhaMacro ( )
Application.ScreenUpdating = False
'ações com select aqui no meio
Application.ScreenUpdating = True
End Sub
Mas, nesse caso, não é necessário utilizar select nem activecell nem offset.
Quarto - Laço de repetição A
Preste Atenção:
A cada nova planilha, linha deve começar novamente (linha = 2). Isso se o paroquiano X estiver na linha 2 da planilha A, na linha 4 da planilha B, na linha 7 da planilha C. Aí é necessário fazer um Loop para cada planilha. E linha deve iniciar novamente (linha = 2).
Quinto - Tipo de variável
Preste Atenção:
Integer é para números, NOME é String
Sexto - Exemplo de laço de repetição A
Option Explicit
Private Sub btn_atualiza_Click()
Dim linha As Long
Dim codigo As Integer
Dim NOME As String
linha = 2
codigo = cint(txt_codigo.Text)
Do Until Sheets("Paroquianos").Cells(linha, 1) = ""
If cint(Sheets("Paroquianos").Cells(linha, 1).Value) = codigo Then
Sheets("Paroquianos").Cells(linha, 2).Value = txt_paroquiano.Text
Sheets("Paroquianos").Cells(linha, 3).Value = txt_morada.Text
Sheets("Paroquianos").Cells(linha, 4).Value = txt_cpostal.Text
Sheets("Paroquianos").Cells(linha, 5).Value = txt_nif.Text
Sheets("Paroquianos").Cells(linha, 6).Value = txt_anoinscricao.Text
End If
linha = linha + 1
Loop
linha = 2 '<<<<<<<<<<<<<<PRESTE ATENÇÃO AQUI
NOME = txt_paroquiano.text
Do Until Sheets("Dados_Preencher").Cells(linha, 1) = ""
If ucase(Sheets("Dados_Preencher").Cells(linha, 1).value) = ucase(NOME) Then
'Sheets("Dados_Preencher").Cells(linha, 1).Value = txt_paroquiano.Text
Sheets("Dados_Preencher").Cells(linha, 2).Value = txt_nif.Text
End If
linha = linha + 1
Loop
Call txt_codigo_AfterUpdate
txt_codigo = ""
txt_paroquiano = ""
txt_morada = ""
txt_cpostal = ""
txt_nif = ""
txt_anoinscricao = ""
MsgBox ("Dados alterados com sucesso!!!")
Unload Me
Application.Visible = False
UserForm1.Show
End Sub
Sétimo - Laço de repetição B
Mas, se o paroquiano X estiver na linha 2 da planilha A, na linha 2 da planilha B, na linha 2 da planilha K, aí basta fazer um único Loop e alterar todas as planilhas dentro desse único Loop.
Oitavo - Exemplo de Laço de repetição B
Private Sub btn_atualiza_Click()
Dim linha As Long
Dim codigo As Integer
Dim NOME As String
linha = 2
codigo = cint(txt_codigo.Text)
Do Until Sheets("Paroquianos").Cells(linha, 1) = ""
If cint(Sheets("Paroquianos").Cells(linha, 1).Value) = codigo Then
Sheets("Paroquianos").Cells(linha, 2).Value = txt_paroquiano.Text
Sheets("Paroquianos").Cells(linha, 3).Value = txt_morada.Text
Sheets("Paroquianos").Cells(linha, 4).Value = txt_cpostal.Text
Sheets("Paroquianos").Cells(linha, 5).Value = txt_nif.Text
Sheets("Paroquianos").Cells(linha, 6).Value = txt_anoinscricao.Text
'Sheets("Dados_Preencher").Cells(linha, 1).Value = txt_paroquiano.Text
Sheets("Dados_Preencher").Cells(linha, 2).Value = txt_nif.Text
End If
linha = linha + 1
Loop
Call txt_codigo_AfterUpdate
txt_codigo = ""
txt_paroquiano = ""
txt_morada = ""
txt_cpostal = ""
txt_nif = ""
txt_anoinscricao = ""
MsgBox ("Dados alterados com sucesso!!!")
Unload Me
Application.Visible = False
UserForm1.Show
End Sub
Nono - Continuação do código
Creio que já está bem mastigadinho e que você consegue fazer para as demais planilhas.
Postado : 03/02/2018 8:19 pm