Ola Pessoal !
Estou tentando fazer com que a planilha não possa ser salva se não estiver preenchidas as Células C2, C3 e H2.
Achei o código abaixo em um Post antigo, mas ele só funciona se eu coloco uma célula no Range como está no exemplo abaixo, Range ("H2").
Se coloco Range ("C2:C3, H2"), dá erro.
Ou se eu coloco Range ("C2, C3, H2") ele só considera a primeira célula "C2", e deixa salvar mesmo que as demais células estiverem vazias.
Private Sub Workbook_BeforeClose(Cancel As Boolean) If Range("H2") = "" Then MsgBox "Preencha os Campos; Loja, Mês e Responsáveis!" Range("H2").Select Cancel = True Exit Sub Else End If End Sub Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) If Range("H2") = "" Then MsgBox "Preencha os Campos; Loja, Mês e Responsáveis!" Range("H2").Select Cancel = True Exit Sub Else End If End Sub
Resposta útil? Clique na mãozinha ao lado do botão Citar.
Castro, troque suas rotinas pelas abaixo, se quiser acrescentar mais condições é só adicionar outros ElseIf Range :
Private Sub Workbook_BeforeClose(Cancel As Boolean) Dim strVazia Dim msg msg = "Preenchimento Obrigatório" ' Define a mensagem If Range("C2").Value = "" Then strVazia = "Loja" MsgBox "Campo " & (strVazia & " em Branco"), vbCritical, msg Range("C2").Activate Cancel = True Exit Sub ElseIf Range("C3").Value = "" Then strVazia = "Mês" MsgBox "Campo " & (strVazia & " em Branco"), vbCritical, msg Range("C3").Activate Cancel = True Exit Sub ElseIf Range("H2").Value = "" Then strVazia = "Responsáveis" MsgBox "Campo " & (strVazia & " em Branco"), vbCritical, msg Range("H2").Activate Cancel = True Exit Sub Else End If End Sub Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) Dim strVazia Dim msg msg = "Preenchimento Obrigatório !!!" ' Define a mensagem If Range("C2").Value = "" Then strVazia = "LOJA" MsgBox "Campo " & (strVazia & " em Branco"), vbCritical, msg Range("C2").Activate Cancel = True Exit Sub ElseIf Range("C3").Value = "" Then strVazia = "MÊS" MsgBox "Campo " & (strVazia & " em Branco"), vbCritical, msg Range("C3").Activate Cancel = True Exit Sub ElseIf Range("H2").Value = "" Then strVazia = "RESPONSÁVEIS" MsgBox "Campo " & (strVazia & " em Branco"), vbCritical, msg Range("H2").Activate Cancel = True Exit Sub Else End If End Sub
Faça os testes e veja se é isto.
Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel
Isso mesmo que eu queria !!
Não manjo muito de VBA obrigado !!
Resposta útil? Clique na mãozinha ao lado do botão Citar.