Notifications
Clear all

Apagar linhas em branco

12 Posts
3 Usuários
0 Reactions
1,849 Visualizações
(@gabrba)
Posts: 33
Trusted Member
Topic starter
 

Olá!

Gostaria de fazer uma alteração na minha macro:

Sub GRAVARRAST()

' Gravar os resultados no banco de dados

   Application.ScreenUpdating = False

    Sheets("RAST").Select
    Rows("7:15").Select
    Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
    Range("A1").Select
    'Sheets("Ddos").Visible = True
    Sheets("Ddos").Select
    Rows("4:12").Select
    Selection.Copy
    Sheets("RAST").Select
    Rows("7:15").Select
    Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
       xlNone, SkipBlanks:=False, Transpose:=False
    Application.CutCopyMode = False
    Sheets("RAST").Select
    Dim i As Integer
    For i = 7 To 15
    If Range("F" & i).Value = "" Then
    Rows(i & ":" & i).Select
    Selection.EntireRow.Hidden = True
    Range("A1").Select
    Else
    End If
    Next i
    Sheets("Ddos").Select
    ActiveWindow.SelectedSheets.Visible = False
    Sheets("Rastreabilidade").Select
    Range("H3").Select
    
    Application.ScreenUpdating = True
    
End Sub

Como podem ver, a macro copia e cola as informações de uma planilha para outra na formatação que eu quero, mas as células em branco ela acaba escondendo. Tem alguma maneira de excluir essas células que ficam em branco?

No aguardo e obrigado!!

 
Postado : 22/12/2016 7:15 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Bom dia gabrba,

Tenta assim:

Option Explicit

'Gravar os resultados no banco de dados
Sub GRAVARRAST()
Dim i As Byte

    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual
    
    Sheets("RAST").Rows("7:15").Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
    Sheets("Ddos").Rows("4:12").Copy
    Sheets("RAST").Rows("7:15").PasteSpecial Paste:=xlPasteValuesAndNumberFormats
    
    Application.CutCopyMode = False

    For i = 7 To 15
        If Sheets("RAST").Range("F" & i).Value = "" Then
            Sheets("RAST").Rows(i & ":" & i).EntireRow.Delete
        End If
    Next i
    
    Sheets("Ddos").Visible = False
    Sheets("Rastreabilidade").Range("H3").Select
    
    Application.Calculation = xlCalculationAutomatic
    Application.ScreenUpdating = True

End Sub

Qualquer coisa da o grito.
Abraço

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 22/12/2016 7:39 am
(@gabrba)
Posts: 33
Trusted Member
Topic starter
 

Olá Bernardo!

Primeiramente obrigado pela resposta rápida.
Já tentei um código parecido mas ela acaba não apagando todas as linhas. Será que há alguma outra maneira ou código para adaptar ao que já temos?

 
Postado : 22/12/2016 8:18 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Não há nada de errado no código...
Teria que olhar a planilha para uma verificação...
Veja se nas células da coluna "F" contém um espaço ou algo que não apareça por exemplo...

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 22/12/2016 8:42 am
(@gabrba)
Posts: 33
Trusted Member
Topic starter
 

Nesse espaço há uma fórmula que puxa de outra planilha (digamos que é de uma planilha primária), mas é uma fórmula que possibilita deixar a célula em branco se na planilha primária não tiver alguma informação digitada.

 
Postado : 22/12/2016 9:31 am
(@edcronos2)
Posts: 346
Reputable Member
 

não li direito mas tente trocar essa parte do codigo do bernardo

    For i = 7 To 15
        If Sheets("RAST").Range("F" & i).Value = "" Then
            Sheets("RAST").Rows(i & ":" & i).EntireRow.Delete
        End If
    Next i

por

    For i = 15 To 7 step -1
        If Sheets("RAST").Range("F" & i).Value2 = "" Then
            Sheets("RAST").Rows(i & ":" & i).EntireRow.Delete
        End If
    Next i

no caso vai ir de baixo para cima
se bem que provavelmente estou me metendo onde não fui chamado pq o bernardo sabe muito mais do que eu

 
Postado : 22/12/2016 9:41 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Tenta assim:

    Option Explicit

    'Gravar os resultados no banco de dados
    Sub GRAVARRAST()
    Dim i As Byte

        Application.ScreenUpdating = False
        Application.Calculation = xlCalculationManual
       
        Sheets("RAST").Rows("7:15").Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
        Sheets("Ddos").Rows("4:12").Copy
        Sheets("RAST").Rows("7:15").PasteSpecial Paste:=xlPasteValuesAndNumberFormats
       
        Application.CutCopyMode = False

        For i = 15 To 7 step - 1
            If len(Sheets("RAST").Range("F" & i).Value) = 0 Then
                Sheets("RAST").Rows(i & ":" & i).EntireRow.Delete
            End If
        Next i
       
        Sheets("Ddos").Visible = False
        Sheets("Rastreabilidade").Range("H3").Select
       
        Application.Calculation = xlCalculationAutomatic
        Application.ScreenUpdating = True

    End Sub

Qualquer coisa da o grito.
Abraço

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 22/12/2016 9:45 am
(@gabrba)
Posts: 33
Trusted Member
Topic starter
 

Tentei com esse novo código mas apresentou um erro, o excel está destacando essa parte:

For i = 15 To 7 step - 1

 
Postado : 22/12/2016 11:36 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

entre o "-" (sinal de menos) e o "1" tem um espaço. Remove ele e tenta novamente.

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 22/12/2016 12:04 pm
(@gabrba)
Posts: 33
Trusted Member
Topic starter
 

Removido, o erro continua persistindo :/

 
Postado : 22/12/2016 12:12 pm
(@edcronos2)
Posts: 346
Reputable Member
 

o certo é vc criar uma planilha de exemplo
troque os dados sigilosos e poste isso vai eliminar um bocado de falhas simples
primeiro que não sabemos oq tem na planilha e depois que vc não conhece muito

mas o erro apresentado é dessa parte

Dim i As byte "laços pelo visto não aceita isse tipo de variaveis para decremento"
troque ´por
Dim i As Long

byte só como valore individuais ou arrays
vba não tem melhora de performance usando variaveis simples como intenger ou bute

 
Postado : 22/12/2016 12:56 pm
(@gabrba)
Posts: 33
Trusted Member
Topic starter
 

Olá, bom dia!

Apenas troquei os valores Dim i As byte por Dim i As long e deu certo!!

Agradeço à todos os envolvidos pela grande ajuda!

Abraços e boas festas!!

Gabriel

 
Postado : 26/12/2016 6:41 am