Propósito
✔ Programação GLOBAL® - Quaisquer soluções e/ou desenvolvimento de aplicações pessoais, ou da empresa, que não constem neste Blog devem ser tratados como consultoria freelance. Queiram contatar-nos: brazilsalesforceeffectiveness@gmail.com | ESTE BLOG NÃO SE RESPONSABILIZA POR QUAISQUER DANOS PROVENIENTES DO USO DOS CÓDIGOS AQUI POSTADOS EM APLICAÇÕES PESSOAIS OU DE TERCEIROS.
Meni
.: Vitrine
Carregando artigos...
Views
Mostrando postagens com marcador lines. Mostrar todas as postagens
Mostrando postagens com marcador lines. Mostrar todas as postagens
Excel Tips - Excluindo linhas em branco ao abrir a Planilha - Removing Blank Rows Automatically
Olá pessoal!
Alguns perguntaram como fazer para deletar as linhas que estão em branco na planilha, logo que a esta for aberta.
Segue um código, simples, honesto, rápido e limpinho.
Private Sub Worksheet_Change (ByVal Target As Range)
'Deleta todas as linhas que estiverem em branco que existirem.
'Previne loops infinitos Let Application.EnableEvents = False
'Caso haja mais de uma célula selecionada.
If Target.Cells.Count > 1 Then
GoTo SelectionCode
If WorksheetFunction.CountA(Target.EntireRow) = 0 Then
Target.EntireRow.Delete
End If
Let Application.EnableEvents = True
Exit Sub
SelectionCode:
If WorksheetFunction.CountA(Selection.EntireRow) = 0 Then
Selection.EntireRow.Delete
End If
Let Application.EnableEvents = True
End Sub
Tags: VBA, Excel, deletar, apagar, excluir, row, lines, linha, range, rows, blank, removing, EntireRow, automatically, delete

VBA Excel - Excluir linhas em branco logo ao abrir a Planilha - Removing Blank Rows Automatically
| Blog Office VBA | Blog Excel | Blog Access |
Sim pessoal. sempre perguntam como deletar linhas em branco da planilha, assim que esta for aberta. Segue um código, simples, honesto, rápido e limpinho:
Private Sub Worksheet_Change (ByVal Target As Range)
'Deleta todas as linhas que estiverem em branco que existirem.'Previne loops infinitos Let Application.EnableEvents = False'Caso haja mais de uma célula selecionada.
If Target.Cells.Count > 1 ThenGoTo SelectionCodeIf WorksheetFunction.CountA(Target.EntireRow) = 0 ThenTarget.EntireRow.DeleteEnd If
Let Application.EnableEvents = TrueExit Sub
SelectionCode:If WorksheetFunction.CountA(Selection.EntireRow) = 0 ThenSelection.EntireRow.DeleteEnd If
Let Application.EnableEvents = True
End Sub
Tags: VBA, Excel, deletar, apagar, excluir, rows, blank, lines, linha, range, removing, EntireRow, automatically, delete

VBA Excel - Limpando cabeçalhos sem uso no Excel
Desenvolvi esta solução a partir de várias soluções que poderão consultar depois.
6º exemplo:
Sub RemovePageHeaders()
Application.ScreenUpdating = False
Dim objRange As Range
Set objRange = Cells.Find("HeaderText")
While objRange <> ""
objRange.Offset(1, 0).Rows(1).EntireRow.Delete
objRange.Rows(1).EntireRow.Delete
Set objRange = Cells.Find("HeaderText")
Wend
MsgBox ("Removido todos os cabeçalhos")
End Sub
Tags: Excel, Delete, clean, remove, header, Linha, Plan, Planilhas, Row, rows, worksheet, lines, UDF
André Luiz Bernardes
A&A® - In Any Place.

VBA Excel - Como deixar suas planilhas enxutas
Confesso que manter o tamanho das planilhas sejam um tema recorrente e difícil de divulgar. Certamente causa interesse, mas o ponto principal é: Como deixá-las menores?
Ja abordei este assunto diversas vezes, sobre óticas distintas: Explicando o motivo destas ficarem assim, mostrando ações efetivas de torná-las menores, demonstrei técnicas com o VBA e tudo o mais.
Nos idos de 2009, escrevi coisas similares as demonstradas abaixo:Possivelmente já percebeu como suas planilhas inflam sem qualquer aparente explicação, como se tivesse comido vários quilos de açúcar. De uma hora prá outra o que tinha apenas uns parcos 530 KB de peso, passa a ter e exibir exuberantes 2.350 KB. O que aconteceu? Será que nossas planilhas atacam a geladeira durante a madrugada?Com o passar do tempo, sem que necessariamente tenhamos acrescentado algum conteúdo relevante, nossas planilhas persistem em aumentar.
:Linhas inofensivasÉ muito comum que somente abramos o nosso arquivo, efetuando pequenas alterações em certas células, além de vez ou outra inserirmos algumas linhas em branco, apenas para posicionarmos algumas informações. O que talvez não percebamos é que estas inofensivas linhas em branco não somem, antes são salvas, ocupando espaço desnecessário. Lógico que isso é muito comum devido a grande manipulação de dados que efetuamos diariamente. Nunca paramos prá pensar em tamanho no nosso dia-a-dia. Somente quando não temos espaço, ou quando o administrador da rede diz-nos que nosso espaço no Public está lotado é que pensamos no motivo de tão poucas planilhas ocuparem tanto espaço.:Mandando suas planilhas para o SPAO MS Excel não consegue distinguir as linhas que estão em branco (pelo menos não o fazia corretamente na versão de 2009) ou vazias e acaba por gravar todas as ocorrências em branco como conteúdo das nossas planilhas. Além disso, caso formatemos uma coluna inteira até a linha 1 milhão (mesmo que sem querer), ao fechar a planilhas teremos gravado aquela coluna em um milhão de linhas, apenas porque esquecemos da formatação ali.O tamanho das planilhas é uma preocupação constante nas nossas aplicações. A não ser que realmente precisemos ter ocorrências extensas, deveríamos automatizar a deleção das linhas excedentes.
Como faremos isso?
Técnicas de exclusão de linhas podem ser colocadas ao fecharmos e/ou gravarmos nossas planilhas...Isso as fariam efetuar atividades 'aeróbicas' constantemente, queimando suas calorias extras...Deletar linhas e efetuar as tais tarefas aeróbicas podem tornar o fechamento das planilhas muito lento dependendo do tamanho.
Confesso que nesta época era persistente, por isso não parei por aí:
Quando nossas planilhas recebem dados de outras bases (fontes), seja através de ODBC, Macros ou mesmo informações da Internet, não raro aparecem melhares de linhas em branco. Caso ache útil deletá-las poderá implementar a solução abaixo.Function EliminateThousandBlankLines(StarLine as Long)' Author: André Luiz Bernardes.' Date: 05.02.2009Let nRow = StartLineDo While ActiveSheet.Cells(nRow, 1) <> ""If ActiveSheet.Cells(nRow, 1).Value <> strUserName ThenActiveSheet.Rows(nRow).EntireRow.DeleteElseLet nRow = nRow + 1End IfLoopEnd Function
Nesta missão de suma importância, onde a deleção de linhas e colunas desnecessárias mostram-se tão preementes, deixo-vos códigos utilíssimos:
Function LastRow (nColumn As String, InitLine As Single) As Single' Author: Date: Contact:' André Bernardes 16/09/2008 14:20 bernardess@gmail.com' Retorna o número de ocorrências.Dim nLine As SingleDim nStart As SingleDim nFinito As SingleDim Cabessalho As SingleDim nCeo As StringApplication.VolatileLet nStart = InitLine + 1Let nFinito = 65000Let Cabessalho = InitLineDo While nStart < nFinitoLet nCeo = nColumn & Trim(Str(nStart))If Application.ActiveSheet.Range(nCeo).Value = "" ThenExit DoEnd If'Let Application.StatusBar.Value = " Linha: " & nStartLet nStart = nStart + 1LoopLet LastRow = (nStart - 1) '- Cabeçalho'Let Application.StatusBar.Value = " "End Function
Function FindLastColumn() As SingleLet FindLastColumn = Range("IV10").End(xlToLeft).Column'ActiveSheet.UsedRange.Columns.Count'Dim LastCol As Integer'Let LastCol = ActiveSheet.Cells.Find(What:="*", SearchDirection:=xlPrevious, SearchOrder:=xlByColumns).Column'Let FindLastColumn = LastColEnd FunctionPrivate Sub Worksheet_BeforeDoubleClick (ByVal Target As Range, Cancel As Boolean)NomePlanilha = ActiveSheet.NameNomePasta = ActiveWorkbook.NameEndereco = ActiveWorkbook.PathUsuarioExcel = Application.UserNameUsuarioEstacao = Environ("USERNAME")UltimaLinhaNumero = ActiveCell.SpecialCells(xlCellTypeLastCell).RowUltimaColunaNumero = ActiveCell.SpecialCells(xlCellTypeLastCell).ColumnUltimaCelulaRange = ActiveCell.SpecialCells(xlCellTypeLastCell).Address & " ou " & ActiveCell.SpecialCells(xlCellTypeLastCell).Address(RowAbsolute:=False) & " ou " & ActiveCell.SpecialCells(xlCellTypeLastCell).Address(ReferenceStyle:=xlR1C1)CelulaAtualLinhaNumero = ActiveCell.RowCelulaAtualColunaNumero = ActiveCell.ColumnCelulaAtualRange = ActiveCell.Address & " ou " & ActiveCell.Address(RowAbsolute:=False) & " ou " & ActiveCell.Address(ReferenceStyle:=xlR1C1)CelulaAtualRelativo = ActiveCell.Address(ReferenceStyle:=xlR1C1, RowAbsolute:=False, ColumnAbsolute:=False, RelativeTo:=Worksheets(NomePlanilha).Cells(1, 1))MsgBox "Planilha Atual" & vbCrLf & vbCrLf & _vbTab & "Nome" & vbTab & vbTab & ": " & NomePlanilha & vbCrLf & _vbTab & "Última Linha" & vbTab & ": " & UltimaLinhaNumero & vbCrLf & _vbTab & "Última Coluna" & vbTab & ": " & UltimaColunaNumero & vbCrLf & _vbTab & "Última Célula" & vbTab & ": " & UltimaCelulaRange & vbCrLf & vbCrLf & vbCrLf & _"Célula Atual" & vbCrLf & vbCrLf & _vbTab & "Número da Linha" & vbTab & ": " & CelulaAtualLinhaNumero & vbCrLf & _vbTab & "Número da Coluna" & vbTab & ": " & CelulaAtualColunaNumero & vbCrLf & _vbTab & "Range" & vbTab & vbTab & ": " & CelulaAtualRange & vbCrLf & _vbTab & "Relativo a A1" & vbTab & ": " & CelulaAtualRelativo & vbCrLf & vbCrLf & vbCrLf & _"Outras Informações" & vbCrLf & vbCrLf & _"Nome da Pasta de Trabalho" & vbTab & vbTab & ": " & NomePasta & vbCrLf & _"Caminho da Pasta de Trabalho" & vbTab & ": " & Endereco & vbCrLf & _"Usuario (Excel)" & vbTab & vbTab & vbTab & ": " & UsuarioExcel & vbCrLf & _"Usuario (Estação)" & vbTab & vbTab & vbTab & ": " & UsuarioEstacao, vbInformation, "Informações"End Sub
Referência: Canguru
Tags: Excel, delete, rows, lines, excel size, cell, cell info, worksheet, small workbook
VBA Excel - Deletando Colunas ou Linhas no Range - Delete Columns or Lines in the range
Caros,
Continuando na linha: "Revisitando As primeiras funções que desenvolvi".
DICA: Todas as funções que criarmos que tenham interação física direta nas planilhas que estivermos utilizando, terão uma performance muito melhor se colocarmos o comando Application.ScreenUpdating = False, antes do início do respectivo processamento.
Como deletar as linhas e colunas num range informado?
Sub DelEveryNthR (DeleteRange As Range, N As Integer)
Dim rCount As Long, r As Long
Application.ScreenUpdating = False
If DeleteRange Is Nothing Then Exit Sub
If DeleteRange.Areas.Count > 1 Then Exit Sub
If N < 2 Then Exit Sub
With DeleteRange
Let rCount = .Rows.Count
For r = N To rCount Step N - 1
.Rows(r).EntireRow.Delete
Next r
End With
End Sub
Sub DeleteEveryNthC (DeleteRange As Range, N As Integer)
Dim cCount As Long, c As Long
Application.ScreenUpdating = False
If DeleteRange Is Nothing Then Exit Sub
If DeleteRange.Areas.Count > 1 Then Exit Sub
If N < 2 Then Exit Sub
With DeleteRange
Let cCount = .Columns.Count
For c = N To cCount Step N - 1
.Columns(c).EntireColumn.Delete
Next c
End With
End Sub
Tags: Bernardes, MS, Microsoft, Office, Excel, deletar, apagar, excluir, row, lines, linha, range, rows, blank, removing, EntireRow, automatically, delete, column, coluna
Assinar:
Postagens (Atom)



