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