Notifications
Clear all

Especificar Arquivo Activate

2 Posts
1 Usuários
0 Reactions
612 Visualizações
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Tenho 4 ComoBox que precisa da planilha aberta para mostrar os dados cadastrados.
Ao abrir um documento segundário, minha aplicação no VBA gera uma mensagem que não encontrou o arquivo especifico algo assim.

Veja o meu código de Activate do Form.


Private Sub UserForm_Activate()

txtProjecao = "VS.1-2012"

Dim Preencher
'Preenche o ComboBox cbx_Local:

    'Esvazia o ComboBox,caso já esteja preenchido:

    cbx_Conta.Clear

    'Selecionamos a planilha onde estão os dados a popularem o combobox:

    Sheets("ListaBD").Select

    'Selecinamos a célula onde está o ínício dos dados.

    'Note que selecionamos o cabeçalho da lista e não o primeiro nome

    Range("B1").Select

    Preencher = True

    'Iniciamos a execução da estrutura lógica

    Do While Preencher = True

        'Seleciona a célula que está na linha imediatamente inferior

        ActiveCell.Offset(1, 0).Select

        'Testa o valor da célula e decide se o laço deve ou não continuar

        If ActiveCell.Value = vbNullString Then

            'Se a célula estiver vazia, altera a condição lógica

            Preencher = False

        Else

            'se não estiver, acrescenta o item

            cbx_Conta.AddItem ActiveCell.Value

    End If

    Loop

    'Coloca o ComboBox na primeira posição válida:

    cbx_Conta.SetFocus
    cbx_Conta.ListIndex = -1

'=========================================================

'Preenche o ComboBox cbx_eqptos

    'Esvazia o ComboBox,caso já esteja preenchido:

    cbx_centrocusto.Clear

    'Selecionamos a planilha onde estão os dados a popularem o combobox:

    Sheets("ListaBD").Select

    'Selecinamos a célula onde está o ínício dos dados.

    'Note que selecionamos o cabeçalho da lista e não o primeiro nome

    Range("C1").Select

    Preencher = True

    'Iniciamos a execução da estrutura lógica

    Do While Preencher = True

        'Seleciona a célula que está na linha imediatamente inferior

        ActiveCell.Offset(1, 0).Select

        'Testa o valor da célula e decide se o laço deve ou não continuar

        If ActiveCell.Value = vbNullString Then

            'Se a célula estiver vazia, altera a condição lógica

            Preencher = False

        Else

            'se não estiver, acrescenta o item

            cbx_centrocusto.AddItem ActiveCell.Value

    End If

    Loop

    'Coloca o ComboBox na primeira posição válida:

    cbx_tiposervico.ListIndex = -1
    
    
'Preenche o ComboBox cbx_tipode servico

    'Esvazia o ComboBox,caso já esteja preenchido:

    cbx_tiposervico.Clear

    'Selecionamos a planilha onde estão os dados a popularem o combobox:

    Sheets("ListaBD").Select

    'Selecinamos a célula onde está o ínício dos dados.

    'Note que selecionamos o cabeçalho da lista e não o primeiro nome

    Range("D1").Select

    Preencher = True

    'Iniciamos a execução da estrutura lógica

    Do While Preencher = True

        'Seleciona a célula que está na linha imediatamente inferior

        ActiveCell.Offset(1, 0).Select

        'Testa o valor da célula e decide se o laço deve ou não continuar
        
        If ActiveCell.Value = vbNullString Then

            'Se a célula estiver vazia, altera a condição lógica

            Preencher = False

        Else

            'se não estiver, acrescenta o item

            cbx_tiposervico.AddItem ActiveCell.Value

    End If

    Loop

    'Coloca o ComboBox na primeira posição válida:

    cbx_tiposervico.ListIndex = -1




'Preenche o ComboBox PREMISSAS

    'Esvazia o ComboBox,caso já esteja preenchido:

    cbxPremissas.Clear

    'Selecionamos a planilha onde estão os dados a popularem o combobox:

    Sheets("ListaBD").Select

    'Selecinamos a célula onde está o ínício dos dados.

    'Note que selecionamos o cabeçalho da lista e não o primeiro nome

    Range("E1").Select

    Preencher = True

    'Iniciamos a execução da estrutura lógica

    Do While Preencher = True

        'Seleciona a célula que está na linha imediatamente inferior

        ActiveCell.Offset(1, 0).Select

        'Testa o valor da célula e decide se o laço deve ou não continuar

        If ActiveCell.Value = vbNullString Then

            'Se a célula estiver vazia, altera a condição lógica

            Preencher = False

        Else

            'se não estiver, acrescenta o item

            cbxPremissas.AddItem ActiveCell.Value

    End If

    Loop

    'Coloca o ComboBox na primeira posição válida:

    cbxPremissas.ListIndex = -1
    
    
'Preenche o ComboBox cbx_tipode servico

    'Esvazia o ComboBox,caso já esteja preenchido:

    cbxPremissas.Clear

    'Selecionamos a planilha onde estão os dados a popularem o combobox:

    Sheets("ListaBD").Select

    'Selecinamos a célula onde está o ínício dos dados.

    'Note que selecionamos o cabeçalho da lista e não o primeiro nome

    Range("E1").Select

    Preencher = True

    'Iniciamos a execução da estrutura lógica

    Do While Preencher = True

        'Seleciona a célula que está na linha imediatamente inferior

        ActiveCell.Offset(1, 0).Select

        'Testa o valor da célula e decide se o laço deve ou não continuar
        
        If ActiveCell.Value = vbNullString Then

            'Se a célula estiver vazia, altera a condição lógica

            Preencher = False

        Else

            'se não estiver, acrescenta o item

            cbxPremissas.AddItem ActiveCell.Value

    End If

    Loop

    'Coloca o ComboBox na primeira posição válida:

    cbxPremissas.ListIndex = -1

'txtDataProjecao = Date

'Valores de Porcentagem e Orçamento preechido com 0

 
Postado : 20/01/2012 6:51 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Pode ser, onde em vermelho está o nome do arquivo a ser ativado:
Workbooks("Pasta1.xls").Activate

Ou uma opção onde a macro esta salva no próprio arquivo onde ela irá acessar as abas:
ThisWorkbook.Activate

 
Postado : 20/01/2012 7:57 pm