Página 1 de 1

Macro Funciona Parcial

Enviado: 04 Jun 2021 às 13:33
por CAMILOALVES
Boa Tarde!
Na planilha em anexo, existe uma macro para inserção de dados da planilha “Cadastro Instrumentação” na planilha “CALENDÁRIO”, e que no ato dessa inserção através de clique no botão “INSERIR”, os dados são checados quanto a duplicidade contra a planilha “CALENDÁRIO”.
Pois bem, quanto a inserção de dados, está funcionando, porém não está checando a duplicidade dos dados incluídos através da planilha "Cadastro Instrumentação" contra a planilha “CALENDÁRIO”.
Desde já agradeço

Re: Macro Funciona Parcial

Enviado: 04 Jun 2021 às 14:24
por osvaldomp
No código Public Sub lsIncluirINSTRUMENTAÇÃO_EQUIPAMENTO()

substitua
If Application.WorksheetFunction.CountIf(Reg.Range("AN6:AN" & lUltimaLinhaAtiva), Ins.Cells(8, 3).Value) > 0 Then
MsgBox "Este Código já existe , Digite Outro": lsLimpaMovimentoQQ: Ins.Cells(8, 3).Select: Exit Sub


por
If Application.WorksheetFunction.CountIf(Reg.Range("AN6:AN" & lUltimaLinhaAtiva), Ins.Cells(4, 3).Value) > 0 Then
MsgBox "Este Código já existe , Digite Outro": lsLimpaMovimentoQQ: Ins.Cells(4, 3).Select: Exit Sub


_____________________________________________________________________________________________________
No código Public Sub lsIncluirINSTRUMENTAÇÃO_EVENTO()

substitua
If Application.WorksheetFunction.CountIf(Reg.Range("AP6:AP6" & lUltimaLinhaAtiva), Ins.Cells(9, 3).Value) > 0 Then
MsgBox "Este Código já existe , Digite Outro": lsLimpaMovimentoRR: Ins.Cells(9, 3).Select: Exit Sub


por
If Application.WorksheetFunction.CountIf(Reg.Range("AP6:AP6" & lUltimaLinhaAtiva), Ins.Cells(5, 3).Value) > 0 Then
MsgBox "Este Código já existe , Digite Outro": lsLimpaMovimentoRR: Ins.Cells(5, 3).Select: Exit Sub

Re: Macro Funciona Parcial

Enviado: 04 Jun 2021 às 15:16
por CAMILOALVES
Prezado osvaldomp - 04 Jun 2021 às 15:24
Muito obrigado por dispor de seu tempo e conhecimento para ajudar-me.
Bingo! Funcionou.
Se possível, Você poderia me explicar as alterações (em vermelho) onde substitui-se 8 por 4 e 9 por 5.
Atenciosamente

Re: Macro Funciona Parcial

Enviado: 04 Jun 2021 às 16:33
por osvaldomp
Salve, @CAMILOALVES .

A propriedade Cells() tem os parâmetros linha e coluna, nessa ordem, então ~~~> Cells(lin,col).
O parâmetro linha é representado pelo número da linha na planilha e o parâmetro coluna pode ser representado ou pelo seu índice ou pela letra que a identifica, assim Cells(1,1) e Cells(1,"A") referem-se à célula A1. Outro exemplo, Cells(5,11) e Cells(5,"K") se referem à célula K5.

No primeiro código acima a função CountIf está contando o conteúdo da célula Cells(8,3) em AN6:ANx, ou seja, está se referindo à célula C8, porém o correto é C4, por isso a alteração para Cells(4,3).

No segundo código está Cells(9,3), porém o correto é Cells(5,3), que corresponde a C5.

A propósito, via agora outra inconsistência no segundo código: este comando ~~~> Range("AP6:AP6" & lUltimaLinhaAtiva) está retornando AP6:AP69, visto que a variável lUltimaLinhaAtiva é igual a 9.
Altere para Range("AP6:AP" & lUltimaLinhaAtiva) ~~~> assim retornará AP6:AP9.

Mais um detalhe sobre essa variável, é que você adicionou 1 a ela, então o comando acima, tecnicamente, deveria subtrair 1 da variável, pois o código está retornando AP6:AP9, porém o intervalo atual com conteúdo é AP6:AP8. Ainda, ao adicionar 1 o nome apropriada seria PrimeiraLinhaVazia e não ÚltimaLinhaAtiva (ÚltimaLinhaComConteúdo). ;)

Re: Macro Funciona Parcial

Enviado: 07 Jun 2021 às 10:20
por CAMILOALVES
Prezado osvaldomp - 04 Jun 2021 às 17:33, Bom Dia!
Muito Obrigado Pela Paciência e Por Compartilhar Vosso Conhecimento.
DEUS Continue Lhe Dando Sabedoria.
Grato