MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

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
    avatar
    leicand
    Novato
    Novato

    Respeito às Regras 100%

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

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

    Mensagem  leicand em Sex 19 Ago 2016, 14: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!
    avatar
    cleverson_manaus
    Super Avançado
    Super Avançado

    Respeito às Regras 100%

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

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

    Mensagem  cleverson_manaus em Sex 19 Ago 2016, 14: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!!! Favor marcar o tópico como resolvido!!!
    avatar
    leicand
    Novato
    Novato

    Respeito às Regras 100%

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

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

    Mensagem  leicand em Sex 19 Ago 2016, 15: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.
    avatar
    cleverson_manaus
    Super Avançado
    Super Avançado

    Respeito às Regras 100%

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

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

    Mensagem  cleverson_manaus em Sex 19 Ago 2016, 15: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!!! Favor marcar o tópico como resolvido!!!
    avatar
    leicand
    Novato
    Novato

    Respeito às Regras 100%

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

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

    Mensagem  leicand em Sex 19 Ago 2016, 15: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 6 vez(es)
    avatar
    Alexandre Neves
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

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

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

    Mensagem  Alexandre Neves em Dom 21 Ago 2016, 18: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
    avatar
    leicand
    Novato
    Novato

    Respeito às Regras 100%

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

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

    Mensagem  leicand em Seg 22 Ago 2016, 18: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!
    avatar
    Alexandre Neves
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

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

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

    Mensagem  Alexandre Neves em Dom 28 Ago 2016, 10: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
    avatar
    leicand
    Novato
    Novato

    Respeito às Regras 100%

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

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

    Mensagem  leicand em Seg 29 Ago 2016, 18:33

    Obrigado Alexandre!

    Agora sim!

    Vou colocar o tópico como resolvido!!

      Data/hora atual: Sex 23 Jun 2017, 20:03