Basole
Geek
Registrado
945 Mensagens
596 Curtidas
ANTONIOLANIS
Novo Membro
Registrado
24 Mensagens
0 Curtidas
Acho que não me fiz entender. Abaixo esta a macro para impressão, mas antes desejo que seja feita a verificação.
Espero ter ficado mais claro. Grato.
Sub Print_plan()
'Intervalo para impressão inicia em B3, mas só deve ser impresso se alguma célula da coluna B estiver preenchida
Range("b3:f" & Range("f" & Cells.Rows.Count).End(xlUp).Row).Select
Selection.PrintOut From:=1, To:=1, Copies:=1
Range("A7").Select
End Sub
Basole
Geek
Registrado
945 Mensagens
596 Curtidas
Marcelo G Pr...
Geek
Registrado
1K Mensagens
227 Curtidas
Imagino que a primeira linha a ser preenchida na sua planilha é a linha 7, logo entendo que se a celula B7 estiver vazia, não havera dados abaixo dessa linha.
Sendo assim o modelo a seguir atende a sua solicitação
O intervalo de impressão esta nomeado.
Anexos
Marcelo Prudencio
Microsoft Excel Brasil no Facebook
"Começar já é a metade do caminho." - Autor Desconhecido
Simplifica que simples fica. - Nicole Tomazella.
"O Simples é Sempre Melhor Que o Complicado" - Jorge Paulo Lemann.
ANTONIOLANIS
Novo Membro
Registrado
24 Mensagens
0 Curtidas
Prudencio, a macro que sugere verifica somente a célula b7. A macro que tenho para impressão segue abaixo. Desejo que imprima somente até a última linha cuja célula da coluna B não esteja vazia. Tentei fazer a verificação por linha considerando a macro abaixo, mas se houver uma célula vazia na coluna F a macro imprime até a primeira célula acima preenchida (da coluna F) ignorando linhas abaixo.
Sub Print_plan()
'Intervalo para impressão inicia em B3, mas só deve ser impresso se alguma célula da coluna B estiver preenchida
Range("b3:f" & Range("f" & Cells.Rows.Count).End(xlUp).Row).Select
Selection.PrintOut From:=1, To:=1, Copies:=1
Range("A7").Select
End Sub
ANTONIOLANIS
Novo Membro
Registrado
24 Mensagens
0 Curtidas
Bom, pelo que eu entendi voce quer que verifica se existem dados no intervalor [B3 a B7].
Caso tenha dados -> imprimir
Caso nao tenha... -> Mensagem
Se for isso, segue com alteração incluindo a chamada para sua macro:
[code=VB]
Option Explicit
Sub Verif_Col_B_Imprime()
Dim Msg As Boolean
Dim rng As Range, c As Range
With ActiveSheet
Set rng = Range("B3:B7")
Set c = rng.Find("*")
Msg = IIf(Not c IsNothing, True, False)
Select Case Msg
Case True
Call Print_plan ' *** Chama a sua Rotina de Impressão
Case False
MsgBox "Não há dados a serem impressos", 64, "Atenção"
End Select
End With
End Sub
[/code]
Na verdade tem que verificar e identificar a última célula preenchida na coluna B e imprimir até ela. A vem a pergunta: Se eu substituir Set rng = Range("B3:B7") por Set rng = Range("B7:B") eu consigo o resultado pretendido?
Basole
Geek
Registrado
945 Mensagens
596 Curtidas
Na verdade tem que verificar e identificar a última célula preenchida na coluna B e imprimir até ela. A vem a pergunta: Se eu substituir Set rng = Range("B3:B7") por Set rng = Range("B7:B") eu consigo o resultado pretendido?
Se voce substituir desta forma vai aparecer um 'error'. Voce tem que definir um intervalor valido. (B7 ate B + " " (nada)) ???
Veja se é isso:
Se na coluna B a partir da linha 7, tiver dados, então imprimir o intervalo de [ B3 até F + a ultima linha que tiver dados nas coluna B] .
Caso contrario: Aparecer a mensagem citada
[code=VB]
Sub Verif_Col_B_Imprime()
Dim Msg As Boolean
Dim rng As Range, c As Range
Dim Lr As Long
With ActiveSheet
Lr = .Cells(Rows.Count, 2).End(xlUp).Row 'define a ultima linha nao vazia
Set rng = Range("B7:B" & Lr)
Set c = rng.Find("*")
Msg = IIf(Not c Is Nothing, True, False)
Select Case Msg
Case True
Call Print_plan ' ** Chama sua Rotina que imprime
Case False
MsgBox "Não há dados a serem impressos", 64, "Atenção"
End Select
End With
End Sub
Sub Print_plan()
'Intervalo para impressão inicia em B3, mas só deve ser impresso se alguma célula da coluna B estiver preenchida
Dim Lr As Long
With ActiveSheet
Lr = .Cells(Rows.Count, 2).End(xlUp).Row 'define a ultima linha nao vazia
Lr = IIf(Lr < 3, 3, Lr) ' se Lr é menor que 3 define Lr com 3
.Range("B3:F" & Lr).Select
Selection.PrintOut From:=1, To:=1, Copies:=1
.Range("A7").Select
End With
End Sub
[/Code]
Click em Curtir se a resposta foi útil. Dê retorno por favor. Se resolveu, Altere o Titulo como [ Resolvido ]
ANTONIOLANIS
Novo Membro
Registrado
24 Mensagens
0 Curtidas
Se voce substituir desta forma vai aparecer um 'error'. Voce tem que definir um intervalor valido. (B7 ate B + " " (nada)) ???
Veja se é isso:
Se na coluna B a partir da linha 7, tiver dados, então imprimir o intervalo de [ B3 até F + a ultima linha que tiver dados nas coluna B] .
Caso contrario: Aparecer a mensagem citada
[code=VB]
Sub Verif_Col_B_Imprime()
Dim Msg As Boolean
Dim rng As Range, c As Range
Dim Lr As Long
With ActiveSheet
Lr = .Cells(Rows.Count, 2).End(xlUp).Row 'define a ultima linha nao vazia
Set rng = Range("B7:B" & Lr)
Set c = rng.Find("*")
Msg = IIf(Not c Is Nothing, True, False)
Select Case Msg
Case True
Call Print_plan ' ** Chama sua Rotina que imprime
Case False
MsgBox "Não há dados a serem impressos", 64, "Atenção"
End Select
End With
End Sub
Sub Print_plan()
'Intervalo para impressão inicia em B3, mas só deve ser impresso se alguma célula da coluna B estiver preenchida
Dim Lr As Long
With ActiveSheet
Lr = .Cells(Rows.Count, 2).End(xlUp).Row 'define a ultima linha nao vazia
Lr = IIf(Lr < 3, 3, Lr) ' se Lr é menor que 3 define Lr com 3
.Range("B3:F" & Lr).Select
Selection.PrintOut From:=1, To:=1, Copies:=1
.Range("A7").Select
End With
End Sub
[/Code]
Basole, antes de tudo, muito obrigado pelo interesse. Resolvi anexar a planilha com alguns dados de exemplo e na própria planilha procurei demonstrar o que esta acontecendo e o que espero (desejo) que aconteça. Nas descrições das macros também inclui informações a serem observadas. A tua sugestão está na planilha, observe como esta funcionando. Não atendeu o que proponho na minha solicitação de ajuda.
Anexos
Basole
Geek
Registrado
945 Mensagens
596 Curtidas
Boa tarde Antonio, o codigo que postei esta correto, o problema é que a macro estava verificando na coluna B, a partir da linha 3 (B3) e na linha 4 (b4), tem a palavra "DATA" (vide img), entao qdo. estava sem dados no intervalo (B7 ate B1048576), a macro estava procurando no intervalo (B7 a B4).
Agora eu inseri uma condicao que se a ultima linha preenchida for 4, considerar a linha como 7. Segue anexo c/ as alteracoes
Anexos
Click em Curtir se a resposta foi útil. Dê retorno por favor. Se resolveu, Altere o Titulo como [ Resolvido ]