Selecione o método de ativação no menu suspenso em vez de escrevê-lo você mesmo

0

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.

Resposta

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.

    
por Sensei 17.05.2013 / 12:51

1 resposta

1

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.

    
por 17.05.2013 / 21:03