Tudo bem, apenas um mal-entendido. No segmento de código do userform, você não precisa do nome para inicializar. Um simples Private Sub UserForm_Initialize()
é suficiente. Você pode desconsiderar o nome dele completamente.
Resposta na parte inferior da postagem
Eu tenho o código abaixo para funcionar, mas uma pergunta permanece. Quando copio e colo o código no meu projeto, não funciona. Mas inserir o contorno da chamada no menu suspenso e colar o restante dentro de seu corpo funciona bem. Então, uma nova pergunta: o que diabos o Excel está fazendo nas minhas costas para que isso funcione?
Estou tentando obter uma seleção de todas as pastas de trabalho abertas em uma caixa de combinação no Excel 2010/2013. Existem muitas soluções on-line (mais ou menos elas são todas iguais). Mas nenhum deles parece funcionar para mim. O que eu tentei:
Private Sub UserForm1_Initialize()
Dim wkb As Workbook
For Each wkb In Application.Workbooks
ComboBox1.AddItem wkb.Name
Next wkb
End Sub
ou
Private Sub Userform1_Initialize()
Dim wkb As Workbook
With Me.ComboBox1
For Each wkb In Application.Workbooks
AddItem wkb.Name
Next wkb
End With
End Sub
O arquivo é salvo como xlsm, os dois elementos são chamados de UserForm1
e ComboBox1
. Existe algum tipo de opção de segurança que eu preciso desativar? O UserForm é chamado, mas a lista está vazia.
Editar 1 : Listar as pastas de trabalho em um MsgBox funciona. Portanto, deve haver algo errado com o método add.
Sub ListOpenBooks()
'lists each book that's OPEN
Dim wkb As Workbook
For Each wkb In Application.Workbooks
MsgBox wkb.Name
Next wkb
End Sub
Editar 2: Usar o mesmo código em um Button no UserForm também funciona. Portanto, deve ser o método Initialize quando o UserForm é chamado.
Tudo bem, apenas um mal-entendido. No segmento de código do UserForm você não precisa do nome para inicializar. Um simples Private Sub UserForm_Initialize()
é suficiente. Você pode desconsiderar o nome dele completamente.