Notifications
Clear all

Problema Ordenar

3 Posts
3 Usuários
0 Reactions
888 Visualizações
(@romanholi)
Posts: 177
Estimable Member
Topic starter
 

Pessoal, bom dia!

Preciso ordenar minhas planilhas numa macro que eu tenho conforme sequencia abaixo. O problema é que pode ocorrer depois que eu gerar o arquivo, não ter todas as planilhas. As vezes terão todas, mas pode ter algumas. Daí a macro não acha a planilha e dá problema. Como posso resolver?

Vide sequencia

Sub Ordenar_Planilhas()

   
    Sheets("HDYN").Move Before:=Sheets(1)
  
    Sheets("LIXC").Move Before:=Sheets(2)
 
    Sheets("BARL").Move Before:=Sheets(3)

    Sheets("WEMH").Move Before:=Sheets(4)

    Sheets("LAQU").Move Before:=Sheets(5)

    Sheets("TOCCHIO").Move Before:=Sheets(6)

    Sheets("TORW").Move Before:=Sheets(7)

    Sheets("HOMAG").Move Before:=Sheets(8)

    Sheets("ACESS-MDF").Move Before:=Sheets(9)

    Sheets("ACESS-PVC").Move Before:=Sheets(10)
    
    
End Sub

Obrigado

 
Postado : 28/10/2016 8:58 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa tarde!!

Use uma lista em uma guia de nome Plan1, na coluna A.

Sub AleVBA_22398()
    Dim r As Range
    For Each r In Sheets("Plan1").Cells(1).CurrentRegion.Columns(1).Cells
        Sheets(r.Value).Move after:=Sheets(Sheets.Count)
    Next
    Sheets("Plan1").Activate
End Sub

Att

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

 
Postado : 28/10/2016 10:01 am
DJunqueira
(@djunqueira)
Posts: 772
Prominent Member
 

Experimente este código:

Sub ReordenaGuias() 
'Move todas as guias p/ uma ordem específica. 

Dim MatrizComNomePlanilhas As Variant,  x As Long ' contador 

'Desabilita a atualização da tela p/ acelerar o processamento. 
Application.ScreenUpdating = False 

'Exibe texto explicativo na barra de status
Application.StatusBar = "Ondenando guias..." 

'Preenche a variável MatrizComNomePlanilhas com os nomes das guias na ordem reversa
'MatrizComNomePlanilhas configurada como variant (1 dimensão) 
MatrizComNomePlanilhas = Array("ACESS-PVC","ACESS-MDF","HOMAG","TORW","TOCCHIO","LAQU","WEMH","BARL","LIXC","HDYN") 

' ------- Inicia reordenamento das guias --------- 
For x = LBound(MatrizComNomePlanilhas) To UBound(MatrizComNomePlanilhas) 
'Checa a existência do nome da planilha usando Private Function 
If ExisteGuia(MatrizComNomePlanilhas(x)) = True Then 
ActiveWorkbook.Sheets(MatrizComNomePlanilhas(x)). Move after:=ActiveWorkbook.Sheets(1) 
End If 
Next x 

'Desativa barra de status
Application.StatusBar = False 

'Habilita a atualização da tela. 
Application.ScreenUpdating = True 
End Sub 

=====================================================================================

'Private Function ExisteGuia
Private Function ExisteGuia(ByVal SheetName As String, Optional ByVal WB As Workbook) As Boolean 
ExisteGuia = False 
On Error Resume Next 
If WB Is Nothing Then Set WB = ActiveWorkbook 
ExisteGuia = CBool(Len(Workbooks(WB.Name).Sheets(SheetName).Name)) 
End Function 

Se sua dúvida foi respondida marque o tópico como RESOLVIDO usando o botão com marca verde.

 
Postado : 28/10/2016 11:09 am