Ir ao conteúdo
  • Cadastre-se

Excel Preenchimento Obrigatório SE em 4 células estiverem vazias, Excel 2003 e 2007


Ir à solução Resolvido por Visitante,

Posts recomendados

Boa noite

 

Venho solicitar ajuda no seguinte:

 

Tenho campos que devem ser preenchidos, serão da célula C7 até F211.

 

Assim que os dados forem apagados, da célula C7 até à célula F211, as células imediatamente a seguir à direita, deverá ser preenchida ( G7 até G211 )

 

Exemplo:

Se nas células C7, D7, E7 e F7 estiverem vazias, então é Obrigatório preencher a célula G7, e enquanto a mesma não for preenchida não sai da planilha.

 

E assim sucessivamente até G211.

 

Isto é, C8, D8, E8 e F8 estiverem vazias, então é Obrigatório preencher a célula G8, e enquanto a mesma não for preenchida não sai da planilha.

Isto é, C9, D9, E9 e F9 estiverem vazias, então é Obrigatório preencher a célula G9, e enquanto a mesma não for preenchida não sai da planilha.

Isto é, C10, D10, E10 e F10 estiverem vazias, então é Obrigatório preencher a célula G10, e enquanto a mesma não for preenchida não sai da planilha.

Isto é, C11, D11, E11 e F11 estiverem vazias, então é Obrigatório preencher a célula G11, e enquanto a mesma não for preenchida não sai da planilha.

Isto é, C12, D12, E12 e F12 estiverem vazias, então é Obrigatório preencher a célula G12, e enquanto a mesma não for preenchida não sai da planilha.

 

E por aí abaixo, da célula C211 até F211.

 

Espero que me tenha expressado bem e que me tenha feito entender.

 

Se houver alguma dúvida, favor de perguntar.

 

Obrigado

 

Boa noite

 

Cumprimentos

CampoObrigatorio.SE.xls

Link para o comentário
Compartilhar em outros sites

  • 2 semanas depois...

 

Em 02/03/2020 às 20:04, Bikke disse:

 

... e enquanto a mesma não for preenchida não sai da planilha.

 

 

Olá, Bikke.

Achei o seu pedido meio estranho, se é que entendi corretamente.

No seu arquivo há somente uma planilha, então sair da planilha, também conhecido como desativar a planilha, significa fechar o arquivo ou abrir outro arquivo ou ativar outro arquivo antes aberto.

 

Com base no seu critério, na ocorrência de qualquer um desses eventos, precisaria ser verificado o preenchimento de  205 linhas, o que me parece não faz sentido.

 

Admitindo a verificação das 205 linhas, para essa tarefa eu colocaria os comandos no evento Workbook_Deactivate. No entanto, a partir daí, se as 205 linhas não atendessem ao critério então não seria possível nem fechar o arquivo nem abrir outro arquivo e nem ativar outro arquivo antes aberto. O que também me parece que não faz sentido.

 

Um exemplo, eu abri agora o seu arquivo, cuja única planilha está vazia, aí eu coloco um código VBA para verificar o preenchimento das 205 linhas, que estão vazias, nessa situação eu não conseguiria fechar o arquivo e não conseguiria ativar outro arquivo.

É isso que você quer? Ou entendi errado? Ou você tem outra ideia?

Link para o comentário
Compartilhar em outros sites

Boa noite osvaldo

 

Coloquei outra Aba que faltava, que é Aba Menu.

 

Coloquei outra planilha com os Campos que devem estar preenchidos caso as células anteriores estejam vazias. ( assim irão entender melhor )

 

Quando digo não sai da planilha, quero dizer que não sai da Aba Entradas para qualquer outra célula ou Aba, enquanto não for preenchida a célula Data Saída.

 

Segue em anexo outra planilha.

CampoObrigatorio.SE.xls

Link para o comentário
Compartilhar em outros sites

  • Solução

Testaí 😜

 

em um módulo comum

Public k As Boolean, str As String

 

no módulo da planilha Entradas

Private Sub Worksheet_Change(ByVal Target As Range)
 If Intersect(Target, Columns("C:G")) Is Nothing Then Exit Sub
 If Application.CountA(Cells(Target.Row, 3).Resize(, 4)) = 0 And Cells(Target.Row, 7) = "" Then
  str = Replace(Cells(Target.Row, 7).Address, "$", "")
  k = True:  Range(str).Activate:  MsgBox "PREENCHA A CÉLULA " & str
 Else: k = False
 End If
End Sub

Private Sub Worksheet_Deactivate()
 If k Then Me.Activate: MsgBox "PREENCHA A CÉLULA " & str
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
 If k Then
  On Error Resume Next
  Application.EnableEvents = False
  Range(str).Activate: MsgBox "PREENCHA A CÉLULA " & str
  Application.EnableEvents = True
 End If
End Sub

 

 

no módulo de EstaPasta_de_trabalho

Private Sub Workbook_BeforeClose(Cancel As Boolean)
 If k Then Me.Activate: Cancel = True: MsgBox "PREENCHA A CÉLULA " & str
End Sub

Private Sub Workbook_WindowDeactivate(ByVal Wn As Window)
 If k Then Me.Activate: MsgBox "PREENCHA A CÉLULA " & str
End Sub

 

Link para o comentário
Compartilhar em outros sites

Boa noite @osvaldomp

 

Obrigado desde já pela tua ajuda.

 

Testei o código VBA para colocar no módulo da planilha Entradas

 

E funciona muito bem.

 

Coloquei o código VBA  no módulo de EstaPasta_de_trabalho

 

E apaguei uma data na coluna G, exemplo célula G16, e fechei o excel, ele pede-me para gravar e fecha o Excel sem se preencher a célula G16 e não devia de acontecer.

 

Junto em anexo a planilha já com os dois códigos VBA's colocados.

 

Podes ver isso, sff??

Obrigado

 

Cumprimentos

CampoObrigatorio.SE_V1.xls

Link para o comentário
Compartilhar em outros sites

Bikke, você instalou os códigos em desacordo com o indicado.

 

Vamos aos módulos utilizáveis no Excel para códigos e funções, entre outros, escritos em VBA.

 

Há quatro tipos de módulos: módulos comuns, módulo de planilha, módulo de EstaPasta e módulos de classe.

 

Módulos Comuns ~~~> podem ser inseridos vários pelo usuário; ao acessar o editor de VBA (Alt+F11) clicar no menu Inserir / Módulo, feito isso, a janela vazia que irá aparecer será o Módulo1, repetindo os cliques irá aparecer a janela correspondente ao Módulo2, ...

 

Módulo de Planilha ~~~> é único para cada planilha e para acessá-lo clicar com o direito na guia da planilha de interesse / Exibir Código, feito isso, a janela vazia que irá aparecer será o módulo da planilha

 

Módulo de EstaPasta ~~~> é único para cada arquivo ou Pasta Excel e para acessá-lo Alt+F11 / duplo clique em EstaPasta_de_trabalho, feito isso, a janela vazia que irá aparecer será o módulo de EstaPasta

 

Módulos de Classe ~~~> idem, idem ao Módulo Comum

 

Atão, sff, baixe o arquivo que você publicou no post #3, copie cada código do post #4 e, com base nos comentários acima, acesse o módulo que lá está indicado e cole nele o código copiado. Após colar todos os códigos, confira, salve o arquivo e atão faça os testes.

 

obs. se um tal código ou uma tal declaração está indicado no post #4 para ser instalado em um certo módulo, atão instale conforme indicado e, se não está indiciado que um tal código ou uma tal declaração deve ser instalado em múltiplos módulos, atão não o faça.

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!