Página 1 de 1

Checar células vazias no evento Worksheet_change

Enviado: 10 Fev 2023 às 07:40
por JapSmart
Olá, amigos e amigas.
Utilizo uma planilha do Excel como agenda de trabalho (em anexo). Gostaria de incrementá-la.
A agenda possui 5 colunas.
Gostaria de criar uma rotina em WORSHEET_CHANGE de maneira que, ao inserir ou editar dados na célula, na coluna 5, fossem checadas se as demais células, na linha, estão preenchidas ou não.
De forma a deixar bem claro, ao preencher ou editar o conteúdo de E1 e sair, fosse verificado se D1, C1, B1 e A1 estão preenchidas ou não. Se estiverem todas preenchidas, o comando será executado, caso contrário deverá ser disparado um exit sub.

Re: Checar células vazias no evento Worksheet_change

Enviado: 11 Fev 2023 às 08:50
por osvaldomp
Olá, José.

Já existe na planilha Agenda um código referente ao evento WS_Change que ordena a Tabela pela coluna A.

A sua ideia é manter aquele código e mesclar com o novo? Ou podemos excluir, pois me parece que é um código desnecessário?

Re: Checar células vazias no evento Worksheet_change

Enviado: 13 Fev 2023 às 07:53
por JapSmart
Bom dia, Oswaldo. Obrigado. Pode excluir.

Re: Checar células vazias no evento Worksheet_change

Enviado: 13 Fev 2023 às 10:41
por osvaldomp
Me parece mais adequado utilizar o evento WS_SelectionChange e não o evento WS_Change.
Veja se esta solução lhe atende.

Preparação do seu arquivo
1. remova do módulo da planilha Agenda o código Worksheet_Change que lá está.
2. reaplique a Validação de Dados de forma correta nas colunas B e C da planilha Agenda , assim :
~~~> selecione a coluna B | Dados | Validação de Dados | Limpar Tudo | OK
~~~> repita na coluna C
~~~> selecione B3:B5 | Dados | Validação de Dados | Lista | clique na caixa Fonte e selecione A2:A17 na planilha DadosParaValidação | OK
~~~> repita em C3:C5 | ... | ... selecione E2:E3 na planilha DadosParaValidação | OK
Após aplicar a VD dessa forma, ao inserir dados na primeira linha vazia abaixo da Tabela, automaticamente o Excel irá incorporar essa linha à Tabela e assim irá estender as VDs das colunas B e C para a nova linha.
3. cole uma cópia do código abaixo no módulo da planilha Agenda
Código: Selecionar todos
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
 Dim LR As Long
  If Target.Count > 1 Then Exit Sub
  LR = Columns(2).Find(what:="*", SearchDirection:=xlPrevious, SearchOrder:=xlByRows).Row
  If Target.Column = 1 Then
   If Target.Value = "" And Target.Row - 1 = LR Then Target.Value = Target.Offset(-1).Value + 1
  ElseIf Target.Column = 5 Then
   If Application.CountA(Cells(Target.Row, 1).Resize(, 4)) < 4 Then
    MsgBox "PREENCHA ANTES AS COLUNAS A ATÉ D"
    Cells(Target.Row, 1).Resize(, 4).SpecialCells(4).Cells(1, 1).Select
   End If
  End If
End Sub
##
funcionamento - planilha Agenda:
1. ao selecionar na coluna A a primeira célula vazia abaixo da Tabela e se houver dados na última linha da coluna B, o código irá inserir o número sequencial igual à célula acima mais um; automaticamente o Excel irá incorporar essa nova linha à Tabela.
2. conforme a sua solicitação, ao selecionar qualquer célula na coluna E, pertencente ou não à Tabela, se as colunas A:D não estiverem preenchidas na linha, então o código irá exibir uma Caixa de Mensagem e irá mudar a seleção para a primeira célula vazia da mesma linha.

Re: Checar células vazias no evento Worksheet_change

Enviado: 13 Fev 2023 às 13:14
por JapSmart
Oi, Osvaldo, boa tarde. Vou utilizar as suas orientações para inserir dados na planilha e depois darei um retorno. Muito obrigado. Gratidão.

Re: Checar células vazias no evento Worksheet_change

Enviado: 13 Fev 2023 às 17:03
por JapSmart
Ficou extamente como eu queria.
Muito obrigado, Osvaldo, pelo desprendimento. Deus o abençoe. Minha gratidão.