Note: The other languages of the website are Google-translated. Back to English

Como fazer uma determinada célula entrar obrigatória antes de fechar a pasta de trabalho?

Quando você compartilha uma pasta de trabalho com outros usuários para fazer uma pesquisa que precisa do registro do nome real, por exemplo, cada usuário sob investigação precisa inserir seu nome em B1. Mas, em alguns momentos, alguns usuários podem fechar a pasta de trabalho após investigação, sem inserir seus nomes. Neste artigo, apresento um VBA para tornar uma determinada célula obrigatória antes de fechar a pasta de trabalho.

Faça uma célula obrigatória entre com VBA


seta azul bolha direita Faça uma célula obrigatória entre com VBA

1. Habilite a pasta de trabalho que contém a célula obrigatória e pressione Alt + F11 chaves para abrir Microsoft Visual Basic para Aplicações janela.

2. No Projeto painel, clique duas vezes Esta pasta de trabalho, e vá para selecionar livro e às Antes de fechar da lista da seção direita e cole o código abaixo no script. Veja a imagem:

VBA: tornar uma célula obrigatória

    If Cells(1, 2).Value = "" Then
        MsgBox "Cell B1 requires user input", vbInformation, "Kutools for Excel"
        Cancel = True
    End If

doc obrigatório digite 1

3. Em seguida, salve este código e feche esta janela pop-up. Agora, se a célula B1 estiver em branco quando você fechar a pasta de trabalho, a caixa de diálogo abaixo aparecerá para lembrá-lo de inserir algo em B1. Veja a imagem:
doc obrigatório digite 2

Ponta: Você pode alterar a célula B1 para outras células que desejar.


As melhores ferramentas de produtividade para escritório

O Kutools for Excel resolve a maioria dos seus problemas e aumenta sua produtividade em 80%

  • armadilha para peixes: Insira rapidamente fórmulas complexas, gráficos e qualquer coisa que você tenha usado antes; Criptografar células com senha; Criar lista de discussão e enviar emails ...
  • Barra Super Fórmula (edite facilmente várias linhas de texto e fórmula); Layout de leitura (ler e editar facilmente um grande número de células); Colar na faixa filtrada...
  • Mesclar células / linhas / colunas sem perder dados; Dividir o conteúdo das células; Combinar linhas / colunas duplicadas... Evite células duplicadas; Comparar intervalos...
  • Selecione Duplicado ou Único Linhas; Selecione linhas em branco (todas as células estão vazias); Super Find e Fuzzy Find em muitos livros; Seleção aleatória ...
  • Cópia exata Várias células sem alterar a referência da fórmula; Criação automática de referências para várias folhas; Inserir marcadores, Caixas de seleção e mais ...
  • Extrair Texto, Adicionar texto, remover por posição, Remover Espaço; Criar e imprimir subtotais de paginação; Converter entre conteúdo de células e comentários...
  • Super Filtro (salvar e aplicar esquemas de filtro a outras planilhas); Classificação Avançada por mês / semana / dia, frequência e mais; Filtro Especial por negrito, itálico ...
  • Combine pastas de trabalho e planilhas; Mesclar tabelas com base em colunas-chave; Divida os dados em várias folhas; Conversão em lote de xls, xlsx e PDF...
  • Mais de 300 recursos poderosos. Suporta Office / Excel 2007-2019 e 365. Suporta todos os idiomas. Fácil implantação em sua empresa ou organização. Teste gratuito de 30 dias com recursos completos. Garantia de devolução do dinheiro em 60 dias.
guia kte 201905

Guia do Office traz interface com guias para o Office e torna seu trabalho muito mais fácil

  • Habilite a edição e leitura com guias em Word, Excel, PowerPoint, Publisher, Access, Visio e Project.
  • Abra e crie vários documentos em novas guias da mesma janela, em vez de em novas janelas.
  • Aumenta sua produtividade em 50% e reduz centenas de cliques do mouse para você todos os dias!
parte inferior da aba do escritório
Comentários (21)
Ainda não há classificações. Seja o primeiro a avaliar!
Este comentário foi feito pelo moderador no site
como faço para tornar a coluna D16-D300 obrigatória se a coluna B16-300 tiver valores? Usei o código abaixo para a linha 16 e tentei variações, mas não está funcionando. Qualquer ajuda é muito apreciada! 'nos negócios como um campo obrigatório - precisa corrigir se nenhum estiver lá e a janela aparecer Private Sub Workbook_BeforeClose(Cancel As Boolean) 'Etapa 1: Verifique se a célula A1 está em branco If Sheets("Sensitive Leave Tracker").Range ("B16").Value "" And Sheets("Sensitive Leave Tracker").Range("D16").Value = "" Then 'Step 2: Blank: cancela o Close e informa ao usuário Cancel = True MsgBox "Cant fechar campo obrigatório" 'Passo 3: Não em branco; Salvar e fechar Else ActiveWorkbook.Close SaveChanges:=True End If End Sub
Este comentário foi feito pelo moderador no site
Olá, desculpe responder tão tarde. Aqui está o código de macro que você pode precisar. Se funcionar, por favor me avise. Obrigado!

Se Application.WorksheetFunction.CountA(Range("B16:B300")) > 0 Then

If Application.WorksheetFunction.CountA(Range("D16:D300")) <> Range("D16:D300").Count Then

MsgBox "Cell D16:D300 requer entrada do usuário", vbInformation, "Kutools for Excel"

Cancelar = Verdadeiro

Se acabar

Se acabar
Este comentário foi feito pelo moderador no site
como faço para tornar a coluna Q7-Q500 obrigatória se a coluna B7-B500 tiver valores

Não quero salvar o arquivo antes de preencher o arquivamento obrigatório.

por exemplo.
Se eu colocar qualquer valor / texto na coluna D7 a D500, a coluna Q7 a Q500 deve ser obrigatória. (Janela aberta)
Se eu não coloquei nenhum valor/texto na coluna D7 a D500, Q7 a Q500 deve estar vazio
Este comentário foi feito pelo moderador no site
Oi, tente acima do VBA e altere a referência para sua própria necessidade.
Este comentário foi feito pelo moderador no site
Você já multou uma resposta para isso?
Este comentário foi feito pelo moderador no site
Desculpe, qual pergunta você quer dizer?
Este comentário foi feito pelo moderador no site
Olá, obrigado por esta fórmula, funciona!

No entanto, agora criei um modelo no qual várias células são de preenchimento obrigatório. Mas depois de criar o template e entrar na macro, não consigo fechá-lo, pois tenho que preencher as células :) Então, não consigo enviar um template...(onde as células obrigatórias ainda devem estar vazias)


Pode me ajudar?

Obrigado!
Este comentário foi feito pelo moderador no site
Qualquer atualização sobre este assunto?
Este comentário foi feito pelo moderador no site
Também tenho interesse nisso, obrigado!
Este comentário foi feito pelo moderador no site
Eu tenho esse mesmo problema. Existe uma maneira de tornar uma célula obrigatória, mas em branco para um modelo?
Este comentário foi feito pelo moderador no site
Oi pessoal, achei que a solução foi pausar a macro na tela alt+f11. Ele pode ser salvo e será reiniciado na próxima vez que for aberto. Para fazer isso pressione alt + f11 então na linha de ícones acima da janela (a mesma onde está o pequeno ícone do disco de arquivo azul) você verá os ícones Reproduzir, Pausar, Parar em verde e azul (deve estar sob o Debug and Run opções). Clique no botão de pausa do meio, então você pode salvar.
Este comentário foi feito pelo moderador no site
Oi pessoal, achei que a solução foi pausar a macro na tela alt+f11. Ele pode ser salvo e será reiniciado na próxima vez que for aberto. Para fazer isso pressione alt + f11 então na linha de ícones acima da janela (a mesma onde está o pequeno ícone do disco de arquivo azul) você verá os ícones Reproduzir, Pausar, Parar em verde e azul (deve estar sob o Debug and Run opções). Clique no botão de pausa do meio, então você pode salvar.
Este comentário foi feito pelo moderador no site
Oi, tente o código abaixo, que forçará outros usuários a inserir o valor no intervalo A7:M7 antes de fechar a pasta de trabalho, mas permita-se colar a pasta de trabalho sem preencher.
Aviso: mude o girassol para seu próprio nome de usuário. Para localizar e editar seu nome de usuário, clique em Arquivo > Opções > Geral > Nome de usuário.
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim rg As Range
Dim rgs As Range
Set rgs = Application.Range("A7:M7")
If Application.UserName = "sunflower" Then
Exit Sub
End If
    For Each rg In rgs
        If rg.Value = "" Then
        MsgBox "Range A7:M7 requires user input", vbInformation, "Kutools for Excel"
        Cancel = True
        Exit Sub
       End If
    Next
End Sub

Espero que este código possa ajudá-lo.
Este comentário foi feito pelo moderador no site
Existe alguma maneira que eu possa Obrigatório célula f4 e F5 ter dados antes de fechar ou salvar?
Este comentário foi feito pelo moderador no site
Basta alterar B1 para F4 e F5 na caixa de texto para lembrar os usuários.
Este comentário foi feito pelo moderador no site
Quero tornar as linhas C2 a C7 obrigatórias e C13 a C19 obrigatórias?

Qualquer ajuda?

2 conjuntos de intervalos estão aqui, mas na mesma coluna.
Este comentário foi feito pelo moderador no site
eu quero tornar as marcas de verificação obrigatórias na planilha
Este comentário foi feito pelo moderador no site
Existe uma maneira de tornar obrigatória uma entrada de células antes que um botão de comando Active X possa ser usado? Eu tenho uma configuração de botão de comando para enviar um formulário por e-mail, mas quero tornar certas células obrigatórias antes que o botão envie o e-mail.
Este comentário foi feito pelo moderador no site
Oi, Craig, desculpe, este problema não pode ser resolvido aqui, talvez outros possam ajudá-lo.
Este comentário foi feito pelo moderador no site
Pergunta, o código funcionou, mas como escolher um intervalo de A7:M7 até a última linha?

e sempre que o usuário salvar ou fechar a pasta de trabalho, o campo obrigatório deverá ser preenchido
Este comentário foi feito pelo moderador no site
Olá, Lester, aqui está um código que modificamos pode ajudá-lo, altere o intervalo A2:F2 para o intervalo que você precisar.
Private Sub Workbook_BeforeClose(Cancel As Boolean)
'UpdatebyExtend20220916
Dim xRgCount As Integer

Dim xURg As Range

Dim xStr As String

Dim xWSh As Worksheet

Dim xRg, xRg1, xRg2, xRg3 As Range

xStr = "A2:F2"

 

Set xWSh = Application.ActiveSheet

Set xRg = xWSh.Range(xStr)

Set xURg = xWSh.UsedRange

Set xRg1 = xWSh.Cells.Item(xRg.Row + xRg.Rows.Count, 1)

Set xRg2 = xURg.Item(xURg.Count)

Set xRg3 = xWSh.Range(xRg1, xRg2)

Debug.Print xRg3.Address

If (xURg.Row + xURg.Rows.Count - 1) > (xRg.Row + xRg.Rows.Count - 1) Then

   If Application.WorksheetFunction.CountA(xRg3) <> xRg3.Count Then

    MsgBox "There are blank cells under range A2:F2", vbInformation, "Kutools for Excel"

Cancel = True

   End If

End If

End Sub


Não há comentários postados aqui ainda
Deixe o seu comentário
Postando como convidado
×
Avalie esta postagem:
0   Personagens
Locais sugeridos