MaximoAccess

Caro Usuário, não tire as suas duvidas nas Salas de Repositório, abra sempre um novo tópico relacionado, nas salas destinadas para o efeito, como Sala de Tabelas, Consultas, Formulários, Relatórios, Macros, Módulos e VBA.

Obrigado

Administração do MaximoAccess

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access

    [Resolvido]Atribuir um código a um controle via VBA

    Compartilhe

    leicand
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 43
    Registrado : 04/01/2016

    [Resolvido]Atribuir um código a um controle via VBA

    Mensagem  leicand em Sex 19 Ago - 9:44

    Bom dia!

    Tenho um Form de busca de produtos que em uma opção de busca avançada abre um outro form para uma busca por atributos dos produtos (ex: Diâmetro, Altura, Dureza, Furos etc.).
    Só que cada tipo de produto tem atributos específicos, então o Form cria os controles (txtbox e combobox, dependendo de cada atributo, se for opção aberta ou fechada).

    O que preciso é quando criar esse controle, atribuir a ele um comando vba OnChange. Isso é possível?

    Não sei se ajuda, mas estou criando os comandos com o seguinte código dentro de um Loop:

    If !range = "S" Then
    Set Ctl = CreateControl(Strform, acTextBox, LeFt:=Left1, Top:=Top1, Width:=Width1, Height:=Height1)
    Ctl.Name = codAtrib
    Else
    Set Ctl = CreateControl(Strform, acComboBox, LeFt:=Left1, Top:=Top1, Width:=Width1, Height:=Height1)
    Ctl.RowSource = "select index_pa1035, vlr_atrib_pa1035 from ATRIBUTOS_PA1035 where comb_pa1035 = '" & !Comb & "'"
    Ctl.BoundColumn = 1
    Ctl.ColumnCount = 2
    Ctl.ColumnWidths = "0;1"
    Ctl.Name = codAtrib

    End If
    Left1 = Left1 - 2500
    Top1 = Top1 + 500
    If Top1 > 6000 Then
    Top1 = 500
    Left1 = 8900
    End If

    Agradeço muito a ajuda!

    cleverson_manaus
    Super Avançado
    Super Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 620
    Registrado : 23/09/2011

    Re: [Resolvido]Atribuir um código a um controle via VBA

    Mensagem  cleverson_manaus em Sex 19 Ago - 9:57



    Bom dia Gabriel,


    Apenas minha sugestão e como comparação:

    Tenho formulários com situações que dependendo da minha escolha ativo ou desativo determinados campos, ou seja, os campos já estão todos previstos e criados, resta apenas decidir quando utilizá-los.


    Abraços,




    .................................................................................
    [Você precisa estar registrado e conectado para ver esta imagem.]

    "É fazendo que se aprende a fazer aquilo que se deve aprender a fazer."(Aristóteles)
    - Dúvida resolvida!!! Tópico resolvido!!!!

    leicand
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 43
    Registrado : 04/01/2016

    Re: [Resolvido]Atribuir um código a um controle via VBA

    Mensagem  leicand em Sex 19 Ago - 10:06

    Bom dia Cleverson,

    Obrigado pela resposta. O formulário está dessa maneira, eu já escrevi os comandos VBA no form e no loop tenho o seguinte código: Forms(Strform).Controls(codAtrib).OnChange = "[Event Procedure]"
    Ele atribui o código que já está escrito no Form.

    O problema é que são centenas de atributos possíveis e cada um tem um valor padrão. Dessa maneira é muito difícil escrever todos e dar manutenção é impossível.
    O ideal realmente seria criar o código quando crio o controle... pretendo apagar o Form toda vez e criar novamente com os controles a cada busca.

    cleverson_manaus
    Super Avançado
    Super Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 620
    Registrado : 23/09/2011

    Re: [Resolvido]Atribuir um código a um controle via VBA

    Mensagem  cleverson_manaus em Sex 19 Ago - 10:09




    Realmente, situação ímpar.


    Acho que postando parte do bd, fica mais fácil a ajuda pelos demais.






    .................................................................................
    [Você precisa estar registrado e conectado para ver esta imagem.]

    "É fazendo que se aprende a fazer aquilo que se deve aprender a fazer."(Aristóteles)
    - Dúvida resolvida!!! Tópico resolvido!!!!

    leicand
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 43
    Registrado : 04/01/2016

    Re: [Resolvido]Atribuir um código a um controle via VBA

    Mensagem  leicand em Sex 19 Ago - 10:21

    Obrigado.

    Segue parte do DB
    Anexos
    BUSCA DE PRODUTOS.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (309 Kb) Baixado 5 vez(es)

    Alexandre Neves
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 5889
    Registrado : 05/11/2009

    Re: [Resolvido]Atribuir um código a um controle via VBA

    Mensagem  Alexandre Neves em Dom 21 Ago - 13:42

    Boa tarde
    Sub AddButtonAndShow()

    Dim Butn As CommandButton
    Dim Line As Long
    Dim objForm As Object

    Set objForm = ThisWorkbook.VBProject.VBComponents("UserForm1")

    Set Butn = objForm.Designer.Controls.Add("Forms.CommandButton.1")
    With Butn
    .Name = "CommandButton1"
    .Caption = "Click me to get the Hello Message"
    .Width = 100
    .Top = 10
    End With

    With objForm.CodeModule
    Line = .CountOfLines
    .InsertLines Line + 1, "Sub CommandButton1_Click()"
    .InsertLines Line + 2, "MsgBox ""Hello!"""
    .InsertLines Line + 3, "End Sub"
    End With

    VBA.UserForms.Add(objForm.Name).Show

    End Sub


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo

    leicand
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 43
    Registrado : 04/01/2016

    Re: [Resolvido]Atribuir um código a um controle via VBA

    Mensagem  leicand em Seg 22 Ago - 13:57

    Boa tarde Alexandre,

    Acho que isso vai resolver meu problema! Mas infelizmente ainda não consegui fazer o código funcionar.

    Quando rodo o código ele trava na seguinte parte:

    Set objForm = ThisWorkbook.VBProject.VBComponents("UserForm1")

    Ele não encontra o método ou membro de dados do ".VBProject"

    Será que estou fazendo algo errado?

    Muito obrigado pela ajuda!

    Alexandre Neves
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 5889
    Registrado : 05/11/2009

    Re: [Resolvido]Atribuir um código a um controle via VBA

    Mensagem  Alexandre Neves em Dom 28 Ago - 5:11

    Bom dia
    O código apresentado é de Excel
    tente utilizar
    Set objForm = forms!NomeDoForm


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo

    leicand
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 43
    Registrado : 04/01/2016

    Re: [Resolvido]Atribuir um código a um controle via VBA

    Mensagem  leicand em Seg 29 Ago - 13:33

    Obrigado Alexandre!

    Agora sim!

    Vou colocar o tópico como resolvido!!

      Data/hora atual: Qua 7 Dez - 14:12