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.
#72919
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.
Você não está autorizado a ver ou baixar esse anexo.
#72928
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?
JapSmart agradeceu por isso
#72941
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.
JapSmart agradeceu por isso
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