Página 1 de 1

Formatação de células automatizadas

Enviado: 14 Abr 2015 às 15:44
por madefer
Olá!

Estou com problemas para formatação de minha tabela.

Acontece o seguinte.
A planilha que estou usando é modificada todo momento.
Ou seja, hora adicionamos linhas, hora excluimos linhas.
Só as colunas permanecem as mesmas.

Consigo fazer o Excel "CRIAR" linhas novas com a formatação usando o "FORMATAR COMO TABELA".
Porém ao excluir a linha, a formatação continua lá.

O que procuro é uma macro que exclua a formatação das linhas em branco.
Mesmo que essas linhas estejam no meio da tabela, pq algumas vezes temos que apagar itens no meio da tabela.

Anexei a tabela para ajudar o entendimento da minha duvida.

Formatação de células automatizadas

Enviado: 14 Abr 2015 às 18:56
por laennder
Não entendi se você quer remover a linha ou a formatação. Pois na planilha você diz uma coisa, e aqui outra.
Se você estiver querendo excluir as linhas que estão em branco, utilize a macro abaixo.
Código: Selecionar todos
Sub ApagaLinhasVazias()
Dim rng As Range
Dim celula As Range

Set rng = Range("Tabela1[Descrição]")

For Each celula In rng
    If IsEmpty(row) Then row.EntireRow.Delete Shift:=xlUp
Next row

End Sub
Ela verifica a primeira coluna apenas, caso a célula esteja vazia, ela remove a linha inteira. Se quiser modificar a coluna que é verifica, basta alterar a linha abaixo
Código: Selecionar todos
Set rng = Range("Tabela1[Descrição]")

Re: Formatação de células automatizadas

Enviado: 15 Abr 2015 às 09:27
por madefer
Consegui fazer a planilha apagar as linhas em branco automaticamente colocando o código no evento "SheetChange"
Código: Selecionar todos
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim R As Long
Dim C As Range
Dim n As Long
Dim rng As Range

On Error GoTo skip
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual

If Selection.Rows.Count > 1 Then
Set rng = Selection
Else
Set rng = ActiveSheet.UsedRange.Rows
End If
n = 0
For R = rng.Rows.Count To 1 Step -1
If Application.WorksheetFunction.CountA(rng.Rows(R).EntireRow) = 0 Then
rng.Rows(R).EntireRow.Delete
n = n + 1
End If
Next R

skip:
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
End Sub
Mas a planilha ficou muito lenta para usar.
Tem como deixar ela um pouco mais rápida?

Formatação de células automatizadas

Enviado: 15 Abr 2015 às 09:59
por laennder
Isso vai ocorrer porque ele vai executar a macro toda vez que você alterar qualquer coisa na planilha. Não é mais fácil você atribuir a macro a uma tecla de atalho, e sempre que você quiser excluir, mandar executar pelo atalho?