Ir ao conteúdo
  • Cadastre-se

Impedir gravar caso celulas ficam em branco, imprimir caso celulas sejam diferentes de zero


Posts recomendados

Boa noite pessoal (sim, aqui é noite, estou em Portugal :)

 

Precisava de uma ajuda em VBA no Excel. De salientar que não percebo quase nada de VBA, fui tirando dicas daquiu e dali e consegui algumas coisas a funcionar :)

 

 

Bom, 1º. Caso:

 

Não deixar gravar um ficheiro caso algumas celulas estejam em branco.

 

Fiz este programa:

 

Private Sub CommandButton1_Click()

Dim path As String
Dim OF As String
Dim REF As String
Dim SIM_NAO As String

'CAMINHO DE ACESSO À GRAVAÇÃO DAS FOLHAS DE PRODUÇÃO
path = "c:\Folhas_Produção\"

OF = Range("J5")
REF = Range("O5")
SIM_NAO = Range("Q5")

ActiveWorkbook.SaveAs FileName:=path & OF & "_" & REF & "_" & SIM_NAO & ".xls", FileFormat:=xlNormal
End Sub

'ABAIXO JÁ NÃO ME FUNCIONA. GRAVA UM FICHEIRO MESMO QUE AS CELULAS ESTEJAM VAZIAS

 

'Impede Salvar Como caso células não sejam preenchidas
Cancel = True

If IsEmpty(Range("PROD!J5")) Or IsEmpty(Range("PROD!O5")) Or IsEmpty(Range("PROD!A10")) Or IsEmpty(Range("PROD!Q5")) Or IsEmpty(Range("PROD!Z10")) Then
Mensagem = MsgBox("OF ou REF ou 1º Rolo OU MAQ. estão vazias! Documento não será gravado.", vbExclamation, "Documento não será salvo")

'Exit Sub
'End If
'End Sub
 

 

2º. Caso: Imprimir caso uma celula for diferente de zero

 

 

Private Sub Workbook_BeforePrint(Cancel As Boolean)

Dim QT_TECIDO As String

QT_TECIDO = Range("NOKS_TECIDO!G4")


'IF Range("PROD!Q5") = SIM and
'IF QT_TECIDO <> 0

' THEN PRINT
 

Aqui sim, não sei o que fazer. Tenho seguido o forum e já vi que aqui tens expecialistas muito bons mesmo, alguém pode dar uma mão aqui ao Portuga??

 

Obrigado

Link para o comentário
Compartilhar em outros sites

Olá,

 

Para impredir o Excel de salvar um arquivo quando algumas células estivem em branco:

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)    If Sheets("PROD").Range("J5") = "" Or Sheets("PROD").Range("O5") Or Sheets("PROD").Range("A10") Then        Cancel = True    End IfEnd Sub

Coloquei apenas 3, acredito que consiga adaptar para inclur as que estão faltando.

 

Note que o código precisa estar no módulo "EstaPasta_de_travalho", segue imagem para ajudar.

 

O racional è mesmo para o seu segundo problema, veja que no VBA não se usa "!" para identificar a worksheet que deseja verificar, por isso está tendo problemas.

 

Abs

post-595425-0-16347200-1447394201.png

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

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...