Notifications
Clear all

[Resolvido] Excluir linhas e colunas cuja soma seja 0

8 Posts
3 Usuários
1 Reactions
1,459 Visualizações
JSCOPA10
(@jscopa10)
Posts: 344
Reputable Member
Topic starter
 

Amigos, boa noite.

Devido a um erro cometido no trabalho esta semana ... preciso de uma ajudinha dos CARAS do VBA!!

Gostaria de um VBA(zinho) que, ao clicar no botão, excluísse as colunas com 0 (zero) na linha 6 ... e outro botão para excluir as linhas com 0 (zero) na coluna Z!!

Explicações bem iguais no próprio arquivo!!

Desde já, MUITO obrigado!!

 
Postado : 14/10/2021 8:54 pm
JSCOPA10
(@jscopa10)
Posts: 344
Reputable Member
Topic starter
 

EdsonBR, vc fez algo parecido que funcionou muito bem, e por muito tempo ...

Mas em OUT/21 tive que mudar o arquivo, aí o código deixou de funcionar ...

Por isto gostaria, como disse, de Código para excluir as colunas que tem zero "0" na linha 6 ...

E outra para excluir as linhas com zero "0" na coluna Z

Assim ficaria mais fácil eu Editar, caso necessário!!

 

 
Postado : 15/10/2021 12:16 am
EdsonBR
(@edsonbr)
Posts: 1057
Noble Member
 

Boa noite, amigo!

Crie os dois botões e teste esse código:

Option Explicit
Enum Excluir
  Linha = 0
  Coluna = 1
End Enum

Sub btnLinha_Click()
  ExcluiComZeros Excluir.Linha
End Sub

Sub btnColuna_Click()
  ExcluiComZeros Excluir.Coluna
End Sub

Sub ExcluiComZeros(tipo As Excluir)
  Dim r As Range, c As Range, rDel As Range
  If tipo = Linha Then Set r = [Z:Z] Else Set r = [6:6]
  On Error GoTo Fim
    Set r = r.SpecialCells(xlCellTypeFormulas)
    For Each c In r.Cells
      If c.Value = 0 Then
        If rDel Is Nothing Then Set rDel = c Else Set rDel = Union(rDel, c)
      End If
    Next c
    If tipo = Linha Then Set rDel = rDel.EntireRow Else Set rDel = rDel.EntireColumn
    rDel.Delete
Fim:
End Sub

 

 
Postado : 15/10/2021 2:30 am
JSCOPA10 reacted
JSCOPA10
(@jscopa10)
Posts: 344
Reputable Member
Topic starter
 

@edsonbr, valeu!!! ... SHOW!!!

Este post foi modificado 3 anos atrás por JSCOPA10
 
Postado : 15/10/2021 9:56 am
(@jordsdoexcel)
Posts: 69
Trusted Member
 

Olá, Edson.

Uma dúvida de um noob em vba, que tá tentando aprender. Essa última Sub não deveria ser uma Function?

Abs.

 
Postado : 15/10/2021 4:10 pm
EdsonBR
(@edsonbr)
Posts: 1057
Noble Member
 

Boa noite, @jordsdoexcel!

 

Definitivamente não, pois o que diferencia fundamentalmente uma Sub de uma Function é o fato de que uma Sub executa ações, simples ou complexas, enquanto que uma Function, embora também possa executar algumas tarefas corriqueiras, é usada pra retornar algum valor ou objeto. É equivalente a uma variável, ou seja, pode ser colocada à direita de um sinal de igualdade ou desigualdade, ter seu valor atribuído a outra variável, etc.

No procedimento do amigo @JSCOPA10 o uso é exclusivamente para executar ações (deletar linhas ou colunas), não pra retornar algum valor ou intervalo.

 
Postado : 15/10/2021 9:18 pm
(@jordsdoexcel)
Posts: 69
Trusted Member
 

Entendi.

Obrigado, mestre!

Abs.

 
Postado : 16/10/2021 9:09 am
JSCOPA10
(@jscopa10)
Posts: 344
Reputable Member
Topic starter
 

Só para esclarecer, o código do EdsonBR funciona perfeitamente, mas após os testes descobri que, primeiro tem que excluir as linhas, depois as colunas ... se inverter esta ordem, o código perde a referência da coluna "Z" !!!

Mas a solução foi ótima!!! 

 
Postado : 16/10/2021 5:18 pm