Código sem formataç...
 
Notifications
Clear all

Código sem formatação e linhas vazias

4 Posts
2 Usuários
0 Reactions
1,419 Visualizações
OrlandoS
(@orlandos)
Posts: 104
Estimable Member
Topic starter
 

.
Olá, pessoal!

Pesquisei aqui, mas não encontrei o resultado pretendido.

Gostaria que a condição IF do código atribuído a um botão só funcione sem transportar
a formatação
da coluna A para B, se na coluna A todas as linhas estiverem
preenchidas e a coluna B vazia.
Caso não atenda a condição acima, então o código encerraria com o ELSE.

Segue o código e um arquivo-modelo:

Private Sub CommandButton1_Click()

Dim Planilha As Worksheet
Dim Intervalo As Range

        ' Colar os dados da coluna A preenchida em B vazia
        If Application.CountA([A2:A18]) <> 0 And Application.CountA([B2:B18]) = 0 Then
        [A2:A18].Copy [B2]
        Range("A2").Select ' Ir para a cél A2

' Salvar e abrir o resultado em PDF
'ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
ActiveWorkbook.Path & "" & Range("AA1").Value & "RESULTADO DO SORTEIO" & ".pdf", Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=True

        Else
        Worksheets("Plan1").Range("B2:B18").ClearContents
        Range("A2").Select ' Ir para a cél A2
'        ActiveSheet.Protect Password:="" ' Proteger a planilha sem senha
End If

End Sub

Grato pela atenção!
Orlando Souza

:geek:

PS: Se a resposta foi útil, clique na "mãozinha positiva" ou em "curtir" na fonte de link informada, agradecendo ao colaborador do código/fórmula. Eu já fiz a minha parte! :]

 
Postado : 17/09/2018 8:49 pm
Wagner Morel
(@wagner-morel-vidal-nobre)
Posts: 0
Illustrious Member
 

OrlandoS,

Boa tarde!

Veja se é assim.

Desenvolvo pequenas soluções em VBA Excel a valores que variam entre R$ 50,00 a R$ 200,00. Se te interessar, entre no meu instagran (vba_excel_desenvolvimento)

Atenciosamente
Wagner Morel

 
Postado : 18/09/2018 11:35 am
OrlandoS
(@orlandos)
Posts: 104
Estimable Member
Topic starter
 

Oi, Wagner!
melhorou!

Porém, às vezes eu preciso acrescentar ou retirar nomes na coluna A daquela tabela.
Existem muitos códigos no VBAProject da minha planilha-principal usando apenas dois intervalos,
por exemplo as Ranges ("A2:A18") e ("B2:B18"); então, fica fácil substituir de uma só vez esses
intervalos com as teclas de atalho Ctrl+U.
O bom seria que o código fosse adaptado só com esses dois intervalos, facilitando
sua alteração quando houvesse mudança na quantidade de nomes na coluna A.

Tentei as três opções abaixo, mas nenhuma delas interrompe a condição IF, se falsa:

Fonte: http://rsfranzoi.blogspot.com/2011/07/vba-encontrar-proxima-celula-vazia.html

If Range("A2:A18").End(xlUp).Offset(1, 0).Select <> 0

Fonte: https://social.msdn.microsoft.com/Forums/pt-BR/e2c19f77-0836-43cf-8777-f26f9a57fb57/verificar-se-um-range-est-vazio?forum=excelpt

If WorksheetFunction.CountA(Range("A2:A18")) <> 0

Fonte: https://www.clubedohardware.com.br/forums/topic/673925-aviso-caso-c%C3%A9lula-esteja-vazia-como-fazer/

If Worksheets("Plan1").Range("A2:A18").Value <> ""

Ps: A última opção só funciona se eu me referir a apenas uma das células na coluna A.

abç

:|

PS: Se a resposta foi útil, clique na "mãozinha positiva" ou em "curtir" na fonte de link informada, agradecendo ao colaborador do código/fórmula. Eu já fiz a minha parte! :]

 
Postado : 18/09/2018 6:02 pm
OrlandoS
(@orlandos)
Posts: 104
Estimable Member
Topic starter
 

.
Vasculhei por toda a net e estou convencido de que não é possível o código VBA identificar
na col A da tabela uma e outra linhas vazias, mas toda a col A vazia/preenchida, seguido
por um sinal de <> ou = mais o 0 (zero) ou as "" (aspas).

Então, vou seguir a sugestão do Wagner e informar ao código a quantidade de linhas
na col A da tabela, com um aviso no final do comando IF para futuras alterações na col A:

Private Sub CommandButton1_Click()

Dim Planilha As Worksheet
Dim Intervalo As Range

        ' Colar os dados da coluna A preenchida em B vazia
        If Application.CountA([A2:A18]) = 17 And Application.CountA([B2:B18]) = 0 Then '17 é o total de linhas na tabela
        Range("A2:A18").Select
        Selection.Copy
        Range("B2:B18").PasteSpecial Paste:=xlPasteValues
        Application.CutCopyMode = False
        Range("A2").Select ' Ir para a cél A2

        Else
        Worksheets("Plan1").Range("B2:B18").ClearContents
        Range("A2").Select ' Ir para a cél A2
End If

End Sub

Obrigado, Wagner!

8-)

PS: Se a resposta foi útil, clique na "mãozinha positiva" ou em "curtir" na fonte de link informada, agradecendo ao colaborador do código/fórmula. Eu já fiz a minha parte! :]

 
Postado : 20/09/2018 9:00 pm