Página 1 de 1

MACRO - Não executar a macro caso haja células vazias.

Enviado: 18 Jul 2021 às 19:28
por Wemmer
Olá pessoal!!
Não tenho muito conhecimento em Excel, porém utilizei recentemente uma MACRO em uma das minhas planilhas e tem adiantado muito meu dia... Esta MACRO ao ser executada pega os dados de uma determinada linha onde são cadastradas as informações e cola em uma campo onde tenho uma determinada lista.

Porém quando as células estão vazias sem o preenchimento das informações e por ventura eu clicar no botão para executar a macro o mesmo é executado normalmente e inserido na minha lista. No entanto insere dados em BRANCO...

Gostaria de ajuda para solucionar esta questão, para que não seja executado a MACRO em caso de campos em BRANCO "SEM PREENCHIMENTO". Mostrando uma mensagem ao usuário, obrigando o mesmo a preencher todos os dados e somente ocorrer a execução da Macro com as células devidamente preenchidas.

*Nesta minha MACRO toda vez que cadastro uma nova linha usando a MACRO a ultima linha é retirada e os novos dados são inserido na primeira linha.

Re: MACRO - Não executar a macro caso haja células vazias.

Enviado: 18 Jul 2021 às 21:02
por osvaldomp
Olá, @Wemmer .

Acrescente ao seu código a linha em vermelho, conforme abaixo.
Sub Macro1()
If Application.CountA([A5:E5]) < 5 Then MsgBox "PREENCHA TODAS AS CÉLULAS EM A5:E5": Exit Sub
Range("B10:F14").Select
...
...

#
Como alternativa, se você quiser testar, o código abaixo retorna resultado igual ao seu e não utiliza Select.
Código: Selecionar todos
Sub ReplicaDados()
 If Application.CountA([A5:E5]) < 5 Then MsgBox "PREENCHA TODAS AS CÉLULAS EM A5:E5": Exit Sub
 [B10:F14].Copy [B11]: [A5:E5].Copy [B10]: [A5:E5] = ""
End Sub

Re: MACRO - Não executar a macro caso haja células vazias.

Enviado: 18 Jul 2021 às 23:00
por Wemmer
osvaldomp escreveu:Olá, @Wemmer .

Acrescente ao seu código a linha em vermelho, conforme abaixo.
Sub Macro1()
If Application.CountA([A5:E5]) < 5 Then MsgBox "PREENCHA TODAS AS CÉLULAS EM A5:E5": Exit Sub
Range("B10:F14").Select
...
...

#
Como alternativa, se você quiser testar, o código abaixo retorna resultado igual ao seu e não utiliza Select.
Código: Selecionar todos
Sub ReplicaDados()
 If Application.CountA([A5:E5]) < 5 Then MsgBox "PREENCHA TODAS AS CÉLULAS EM A5:E5": Exit Sub
 [B10:F14].Copy [B11]: [A5:E5].Copy [B10]: [A5:E5] = ""
End Sub
Perfeitoooo muito obrigado você não tem noção o quanto de tempo vou economizar em meus lançamentos...

Utilizei o primeiro código:

If Application.CountA([A5:E5]) < 5 Then MsgBox "PREENCHA TODAS AS CÉLULAS EM A5:E5": Exit Sub

o outro não consegui fazer funcionar.

*Se não for pedir muito pode me ajudar com mais uma questão?

Costumo bloquear minha planilha para fazer os lançamento de forma segura, para que eu não altere ou apague alguma formula sem querer. Porém se a planilha estiver bloqueada eu não consigo executar a MACRO.

Ao clicar para executar mostra uma mensagem com erro:

Erro em Tempo de execução '1004':

A célula ou gráfico que você esta tentando alterar está em uma planilha protegida.
Para fazer uma alteração, desproteja a planilha.
Pode ser necessário inserir uma senha.

FIM DEPURAR AJUDA


*Gostaria de fazer ela rodar de forma protegida para evitar problemas com as formulas.

Desde já agradeço a atenção.

Abraço

Re: MACRO - Não executar a macro caso haja células vazias.

Enviado: 19 Jul 2021 às 11:16
por osvaldomp
Para atuar na planilha protegida cole uma cópia do código abaixo no lugar do existente.
Código: Selecionar todos
Sub ReplicaDados()
 If Application.CountA([A5:E5]) < 5 Then MsgBox "PREENCHA TODAS AS CÉLULAS EM A5:E5": Exit Sub
 ActiveSheet.Protect UserInterfaceOnly:=True
 [B10:F14].Copy [B11]: [A5:E5].Copy [B10]: [A5:E5] = ""
End Sub
#
Se você vai proteger a planilha com senha então utilize a linha abaixo e altere senha BozoDonkey se desejar.
Código: Selecionar todos
ActiveSheet.Protect "BozoDonkey", UserInterfaceOnly:=True
#
O arquivo anexo está com o código acima instalado e funcionando. Veja se funciona aí.