Este fórum está sendo desativado

Depois de 9 anos, este fórum será desativado. Mas calma.... estamos migrando para uma comunidade no DISCORD. Junte-se a nós.

ENTRAR PARA DISCORD

Tópicos relacionados a códigos VBA, gravação de macros, etc.
#21974
Estou tendo dificuldade em verificar a razão do "Erro em tempo de Execução: 13" no código abaixo.

A macro deveria executar a seguinte sequência:

Verificar se existe diferença entre o valor uma célula de um formulário e a célula de um relatório, caso existir a diferença, a macro copia o valor da célula do formulário e cola no relatório de acordo com a posição (linha) de um protocolo.

Quando executo a busca pelo protocolo na coluna "B" do relatório, a macro interrompe a execução devido a este erro.

Abaixo o código:

Sub update_reg()

Application.ScreenUpdating = False

Dim protocol As String

Dim end_old As Long
Dim rmks_old As String
Dim usr_old As String
Dim dt_reg_old As Long

Dim end_new As Long
Dim rmks_new As String
Dim usr_new As String
Dim dt_reg_new As Long

Sheets("Atualizar").Select

protocol = Range("P2").Value

end_old = Range("P5").Value
rmks_old = Range("P3").Value
usr_old = Range("P11").Value
dt_reg_old = Range("P12").Value

end_new = Range("F13").Value
rmks_new = Range("P17").Value
usr_new = Range("P1").Value
dt_reg_new = Range("G4").Value

If end_old <> end_new Then

Sheets("relatorio").Select

Range("B:B").Find(protocol, ActiveCell, xlValues, xlWhole, xlByRows).Activate :oops:
ActiveCell.Offset(0, 4).Value = end_new
ActiveCell.Offset(0, 6).Value = dt_reg_new
Sheets("Atualizar").Select

MsgBox "Término Atualizado", vbOKOnly, "Atualizar Registro"


ElseIf usr_old <> usr_new Then

Sheets("relatorio").Select
Range("B:B").Find(protocol, ActiveCell, xlValues, xlWhole, xlByRows).Activate :oops:
ActiveCell.Offset(0, 5).Value = usr_new
ActiveCell.Offset(0, 6).Value = dt_reg_new
Sheets("Atualizar").Select

MsgBox "Usuário Atualizado", vbOKOnly, "Atualizar Registro"

ElseIf rmks_old <> rmks_new Then

Sheets("relatorio").Select
Range("B:B").Find(protocol, ActiveCell, xlValues, xlWhole, xlByRows).Activate :oops:
ActiveCell.Offset(0, 7).Value = rmks_new
ActiveCell.Offset(0, 6).Value = dt_reg_new
Sheets("Atualizar").Select

MsgBox "Observações Atualizadas", vbOKOnly, "Atualizar Registro"

Else
Sheets("Atualizar").Select
MsgBox "Nenhuma Alteração Efetuada!", vbOKOnly, "Cancelar Atualização de Registro"

End If

Application.ScreenUpdating = True

End Sub

Coloquei os smilies pra indicar as linhas onde o erro acontece

Agradeço desde já a quem puder me ajudar.

Att.;
#21981
Experimente:
Código: Selecionar todos
Range("B:B").Find(protocol, LookIn:=xlValues, lookat:=xlWhole).Activate
#21988
FelipeNarukami escreveu:O erro acontecia antes por causa da opção "ActiveCell"?
Provavelmente sim. Ao utilizar o ActiveCell a célula ativa deve estar no intervalo da busca, no seu caso, a coluna 'B'. Então, se você selecionar qualquer célula daquela coluna o seu comando vai rodar sem erro.

Se você quiser iniciar a busca a partir de determinada célula na coluna, sugiro que você indique o endereço da célula no código ou utilize uma variável, em lugar de ActiveCell. A propósito, tente escrever seus códigos sem Select , sem Activate e sem ActiveCell. Esses comandos raramente são necessários e eles aumentam o tempo de execução, ainda que seja utilizado o ScreenUpdating=False.

Sem utlizar o ActiveCell a célula ativa pode ser qualquer uma, mas nesse caso me parece que é obrigatório LookIn, lookat, etc.

Por último, o comando ByRows é dispensável pois como o intervalo de busca é uma única coluna a busca ocorrerá naturalmente por linhas ('B1, B2, B3, ...').
long long title how many chars? lets see 123 ok more? yes 60

We have created lots of YouTube videos just so you can achieve [...]

Another post test yes yes yes or no, maybe ni? :-/

The best flat phpBB theme around. Period. Fine craftmanship and [...]

Do you need a super MOD? Well here it is. chew on this

All you need is right here. Content tag, SEO, listing, Pizza and spaghetti [...]

Lasagna on me this time ok? I got plenty of cash

this should be fantastic. but what about links,images, bbcodes etc etc? [...]

Estamos migrando para uma comunidade no Discord