Página 1 de 1

Listar Planilhas Código VBA

Enviado: 03 Nov 2019 às 14:33
por MRS1977
Boa tarde, Pessoal!

Alguém pode me ajudar com o código abaixo?

Está apresentando erro nesta parte do código (Set SheetsNameList = CreateObject("System.Collections.ArrayList")

Observação: No Microsoft Excel 2016 funciona perfeitamente, mas na versão 2019 está apresentando erro.

Desde já grato pela atenção.

Marcos

Private Sub Worksheet_Activate()
Dim i As Long
Dim Names As Variant
Dim NumSheets As Long
Dim SheetsNameList As Object
Range("A2:A50").ClearContents

Set SheetsNameList = CreateObject("System.Collections.ArrayList")
For i = 2 To Sheets.Count
SheetsNameList.Add ActiveWorkbook.Sheets(i).Name
Next i
SheetsNameList.Sort

Names = WorksheetFunction.Transpose(SheetsNameList.ToArray)
Range("A2:A50").Resize(SheetsNameList.Count).Value2 = Names
End Sub

Re: Listar Planilhas Código VBA

Enviado: 03 Nov 2019 às 15:19
por osvaldomp
Experimente:
Código: Selecionar todos
Dim i As Long
  Range("A2:A50").ClearContents
  For i = 2 To Sheets.Count
   Cells(i, 1) = Sheets(i).Name
  Next i

Listar Planilhas Código VBA

Enviado: 03 Nov 2019 às 16:11
por MRS1977
Osvaldo,
em qual parte eu troco o código sugerido por você?

Marcos

Re: Listar Planilhas Código VBA

Enviado: 03 Nov 2019 às 16:55
por osvaldomp
Olá, Marcos.
O código que eu sugeri substitui o seu por completo. Ficaria conforme abaixo.
Código: Selecionar todos
Private Sub Worksheet_Activate()
 Dim i As Long
  Range("A2:A50").ClearContents
  For i = 2 To Sheets.Count
   Cells(i, 1) = Sheets(i).Name
  Next i
End Sub

Listar Planilhas Código VBA

Enviado: 03 Nov 2019 às 17:23
por MRS1977
Osvaldo,
Funcionou perfeitamente.
Só mais uma pergunta. Sou iniciante em VBA, qual função eu uso para que quando o código executar já classificasse a lista de planilhas em ordem alfanumérico?
Muito obrigado pela ajuda!!!
Fique com Deus!!!

Re: Listar Planilhas Código VBA

Enviado: 03 Nov 2019 às 19:00
por osvaldomp
Experimente.
Código: Selecionar todos
Private Sub Worksheet_Activate()
 Dim i As Long
  Range("A2:A50").ClearContents
  For i = 2 To Sheets.Count
   Cells(i, 1) = Sheets(i).Name
  Next i
  Range("A2:A50").Sort Key1:=[A2], Order1:=xlAscending
End Sub
Dependendo da formação alfanumérica dos nomes das planilhas a ordenação padrão do Excel poderá não resultar conforme você deseja. Se for esse o caso então disponibilize alguns nomes das planilhas que representem todos os nomes e coloque a ordem desejada.