Notifications
Clear all

Verifica se "" antes de executar a macro

5 Posts
3 Usuários
0 Reactions
1,069 Visualizações
(@tonilanis)
Posts: 32
Eminent Member
Topic starter
 

Através de uma macro eu salvo um arquivo PDF, porém gostaria que ela verificasse se a um determinado intervalo (no caso iniciando em b7 e não em b3 como instrui a Range) contém dados antes e caso contrário, uma caixa de mensagem informa "Não há dados para serem salvos ou impressos."
A macro que uso é esta:

Sub PDF_Salva()

    caminho = ActiveSheet.Range("j3").Value
    nome = ActiveSheet.Range("j4").Value
    
    Range("b3:F" & Range("F" & Cells.Rows.Count).End(xlUp).Row).Select
     
    Selection.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
    caminho & nome
            
    Range("A7").Select
    
End Sub
 
Postado : 28/11/2015 9:56 pm
(@edivan)
Posts: 119
Estimable Member
 

Opa, tudo certo?

Antes de tudo na sua macro tente colocar esses códigos
A parte em vermelho você tem que especificar até que linha deseja verificar, no caso vai começar da linha 7 passando na coluna "B" apenas e vai até a linha qual você especificar...

Dim lin As Integer, encontrado As Integer

lin = 7
encontrado = 0

Do Until lin > 20
If Range("b" & lin).Value <> "" Then
encontrado = 1
Exit Do
End If
lin = lin + 1
Loop

If encontrado = 0 Then
MsgBox "Não há dados a serem impressos!!!"
Exit Sub
End If

Visite meu blog:

programacaopassoapasso.wordpress.com

 
Postado : 29/11/2015 7:03 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Fiquei em duvida se quer conferir a Coluna iniciando em "B7", conforme passou o colega Edivan, ou quer o Range "B:F", só para exemplificar, mas é só ajustar com ema variavel que verifica a ultima linha, ou se for range fixo é só alterar:

Sub VerificaVazias()
    Dim rngArea As Range
    Dim x As Object
    
    Set rngArea = Range("B7:F11") ' ou "B7:B20" para coluna
    
    For Each x In rngArea
        
        If x.Value = Empty Then
            
            MsgBox "celula vazia em : - " & x.Address(0, 0)
            x.Select
            
        End If
    Next x
    
End Sub

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 29/11/2015 9:21 am
(@tonilanis)
Posts: 32
Eminent Member
Topic starter
 

Olá Edivam e Mauro, boa noite. Esta macro deve imprimir o intervalo B3:F. Acho que nisso vocês não tem dúvida. A questão é que o preenchimento de dados nesta planilha é executado por outra macro. Esta "macro que preenche os dados" lança os valores a partir da célula B7 (intervalo de preenchimento até F). Da forma como esta a macro que tenho e enviei a vocês, ela imprimirá o que já existe entre B3:F, no entanto eu desejo que esse comando (da macro PDF_Salva) só seja executado se houver dados (preenchimentos) de B7 abaixo e caso NÃO haja a macro pare e informe não haver dados a serem impressos/salvos.
Espero ter esclarecido.

 
Postado : 29/11/2015 6:08 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

toni, qualquer uma das rotinas citadas fazem a verificação se contem dados, e como já tem a rotina para Imprimir/Salvar é só colocar instrução chamando a sua macro apos a verificação, por exemplo :
Na dica do Edivan, altere a linha :

If encontrado = 0 Then
MsgBox "Não há dados a serem impressos!!!"
Exit Sub

else

Call SuaMacro

End If

Na que indiquei :

If x.Value = Empty Then

MsgBox "celula vazia em : - " & x.Address(0, 0)

Exit Sub
else

Call SuaMacro

End If

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 29/11/2015 7:57 pm