Vídeo recomendado
https://youtu.be/diWPPPhW-9E

OBJETO CRIADO EM TEMPO DE EXECUÇÃO. EVENTOS? [RESOLVIDO]

Fórum para dúvidas sobre os fundamentos da linguagem de programação Visual Basic no contexto do VBA
RodrigoVale
Acabou de chegar
Acabou de chegar
Mensagens: 6
Registrado em: Qui Jul 30, 2015 9:08 am

OBJETO CRIADO EM TEMPO DE EXECUÇÃO. EVENTOS? [RESOLVIDO]

Mensagem por RodrigoVale »

Tomas Vasques e a Todos os Participantes, bom dia!

Primeiramente, agradeço pela atenção. E pela Ajuda. Obrigado

Estou criando um Form! Onde os objetos TextBox estão sendo criados em tempo de execução/tempo projeto. Esta parte já consegui desenvolver: Segue o Código:

Código:
Set PA1 = Me.Controls.Add("Forms.TextBox.1", "PA1", True)
With PA1
.Width = 60
.Height = 18
.top = top + 5
.Left = 20
.MaxLength = 10
.ForeColor = &HFF&
.SpecialEffect = 3
.Text = DateSerial(ano, mes, dia)
End With

Estes TextBox criados em tempo de execução seria para trabalhar com Datas.

Deste modo, gostaria de fazer algumas operações, tais como, aplicar o evento Change(), bem como, KeyPress()

O evento Change(). Seria para aplicar a formatação data, com o caracter "/".
O evento KeyPress(). Seria para aceitar somente números.


Ocorre, que não estou conseguindo. Vincular esses eventos ao Novo Objeto Criado Em Tempo de Execução.

Isso é Possível? Ou os eventos somente são para os próprios objetos do Excel?

Novamente, agradeço imensamente pela ajuda.
Editado pela última vez por RodrigoVale em Qui Jul 30, 2015 1:08 pm, em um total de 1 vez.


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Avatar do usuário
Mauro Coutinho
Jedi
Jedi
Mensagens: 1561
Registrado em: Sáb Mar 13, 2010 8:10 pm
Localização: São José dos Pinhais - Pr

Re: OBJETO CRIADO EM TEMPO DE EXECUÇÃO. COMO APLICAR EVENTOS

Mensagem por Mauro Coutinho »

Rodrigo, para trabalharmos com controles adicionados por tempo de execução, temos de criar um modulo de classe, criei o modelo abaixo que acredito irá facilitar o entendimento, em vez de ter de colocar todas as rotinas, de uma olhada e veja se é isto.
Neste modelo, deixei um Textbox já criado e o outro é criado ao iniciar o formulário, então a formatação que quer será para qualquer textbox que adicionar no formulário, poderá tambem atraves de um Select Case fazer outras definições.

Textbox Tempo de execução WithEvents
withEvents Tempo execucao.zip
(20.9 KiB) Baixado 1027 vezes
A titulo de informação veja nos tópicos abaixo algumas formatações que podem ser feitas.
Fomatar TextBox Eventos KeyPress e Change
viewtopic.php?f=17&t=1505#.VboozUaXtkY

Neste Tópico tambem tem um modelo utilizando somente o Evento KeyPress com os textbox ja no formulário:
Macro para tratar o campo cep
viewtopic.php?f=6&t=3785#.VbooUEaXtkY
Qualquer duvida retorne.


RodrigoVale
Acabou de chegar
Acabou de chegar
Mensagens: 6
Registrado em: Qui Jul 30, 2015 9:08 am

Re: OBJETO CRIADO EM TEMPO DE EXECUÇÃO. COMO APLICAR EVENTOS

Mensagem por RodrigoVale »

Mauro Coutinho, bom dia!

É, exatamente isto que pretendia fazer.

Nossa, salvou a minha vida!!! rssss..

Estava a dias procurando, lendo!!!

MUITO OBRIGADO pela atenção e pelo exemplo enviado!


Avatar do usuário
Mauro Coutinho
Jedi
Jedi
Mensagens: 1561
Registrado em: Sáb Mar 13, 2010 8:10 pm
Localização: São José dos Pinhais - Pr

Re: OBJETO CRIADO EM TEMPO DE EXECUÇÃO. COMO APLICAR EVENTOS

Mensagem por Mauro Coutinho »

Se foi útil é só clicar na mãozinha agradecendo, e qualquer duvida retorne.

[]s


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Avatar do usuário
Mikel Silveira Fraga
Jedi
Jedi
Mensagens: 1173
Registrado em: Sex Mai 27, 2011 3:27 pm
Localização: Governador Valadares - MG
Contato:

Re: OBJETO CRIADO EM TEMPO DE EXECUÇÃO. COMO APLICAR EVENTOS

Mensagem por Mikel Silveira Fraga »

Bom dia Rodrigo e Mauro.

Estava vendo o uso do Evento em tempo de execução e até consegui montar um modelo aqui, utilizando o mesmo recurso.

Acho que vale a pena postá-lo também, pois já é mais um para os testes, mais humilde, claro.

Abraço a todos.
Anexos
Eventos_Modulo_Classe.zip
(12.14 KiB) Baixado 511 vezes


Avatar do usuário
Mauro Coutinho
Jedi
Jedi
Mensagens: 1561
Registrado em: Sáb Mar 13, 2010 8:10 pm
Localização: São José dos Pinhais - Pr

Re: OBJETO CRIADO EM TEMPO DE EXECUÇÃO. EVENTOS? [RESOLVIDO]

Mensagem por Mauro Coutinho »

Mikel, sempre é interessante termos opções e esta é mais uma delas, em seu modelo tem uma chamada no evento Open do workbook "Call Módulo1.InitializeApp" e este modulo não tem.
Isto é o de menos, ja apaguei no que baixei.

Quanto a lidar com WithEvents como eu citei anteriormente, é interessante quando temos varios controles no formulário e não queremos escrever um código para cada um, e baseando em seu modelo vamos falar do controle CommandButton, então supondo que em seu formulário nós tivéssemos 06 Botões com o nome padrão "CommandButton1, 2, 3...6" e gostariamos que cada um realizasse uma ação diferente ou uma outra macro, da forma normal, clicariamos em cada um e adicionaríamos o que queremos no evento click dele.
Agora utilizando o Modulo de Classe criamos as ações com Select Case sem ter de escrever nos botões separadamente, ficaria assim :

No Userform1 adicione 06 CommandButton, de dois clique no formulario e coloque as instruções :

Código: Selecionar todos

Option Explicit

Dim btnArray() As New EventClassModule

Private Sub UserForm_Activate()
    
    Dim i As Integer, TipoCtl As Control
        
    For Each TipoCtl In Me.Controls
            
        If TypeOf TipoCtl Is MSForms.CommandButton Then
            i = i + 1
            ReDim Preserve btnArray(1 To i)
            Set btnArray(i).btnEvents = TipoCtl
        End If
            
    Next TipoCtl
        
        Set TipoCtl = Nothing
    
End Sub
Agora crie um Modulo de Classe e renomeie para "EventClassModule" e cole as instruções abaixo :

Código: Selecionar todos

Option Explicit

Public WithEvents btnEvents As MSForms.CommandButton

'Public Sub btnEvents_Click()
'    MsgBox "Você clicou no Botão : " & btnEvents.Caption
'End Sub

Public Sub btnEvents_Click()
    
    'Com o nome padrão utilizamos somente o numero do commandButon no Case
    Select Case CInt(Replace(btnEvents.Name, "CommandButton", ""))
    
    Case 1 To 3
        MsgBox "Você clicou no Botão : " & btnEvents.Caption
    
    Case 4, 5
        MsgBox "Você clicou no Botão : " & btnEvents.Caption
    
    Case 6
        MsgBox "Você clicou no Botão : " & btnEvents.Caption
    
    Case Else
    
    End Select
    
End Sub
Desta forma em cada Case podemos definir uma ação diferente para o Botão clicado.


Avatar do usuário
Mikel Silveira Fraga
Jedi
Jedi
Mensagens: 1173
Registrado em: Sex Mai 27, 2011 3:27 pm
Localização: Governador Valadares - MG
Contato:

Re: OBJETO CRIADO EM TEMPO DE EXECUÇÃO. EVENTOS? [RESOLVIDO]

Mensagem por Mikel Silveira Fraga »

Mauro, boa tarde.

Engraçado como a vida é um aprendizado e, na pratica, aperfeiçoamos esse aprendizado.

O modelo que fiz, foi baseado em um material que tenho a uns 2 anos quase e não havia compreendido seu uso com os Módulos de Classe.

Nestes últimos meses, eu tenho tentado capturar o conceito de utilização dos Módulos de Classe, através da criação de objetos personalizados. Inclusive estou tentando montar um objeto para manipulação de Xml, desde leituras das tags, até a criação de uma estrutura, a partir do zero, mas utilizando o um Objeto criado em Módulo de Classe.

Ai hoje, vejo esse tópico do amigo Rodrigo e, do nada, já vem um estalo sobre esse material e meus estudos atuais, tirando as possibilidades que vi no seu código.

Sobre o código do evento Open do Workbook, realmente havia esquecido de apagar. Estava fazendo um teste e acabou ficando, mas obrigado pelo aviso.

É sempre um prazer Mauro, ter a possibilidade de aprender mais com os seus conhecimentos e de tantos outros deste fórum.

Espero te ver sempre por ai. Abraços e se cuida cara.


Avatar do usuário
Mauro Coutinho
Jedi
Jedi
Mensagens: 1561
Registrado em: Sáb Mar 13, 2010 8:10 pm
Localização: São José dos Pinhais - Pr

Re: OBJETO CRIADO EM TEMPO DE EXECUÇÃO. EVENTOS? [RESOLVIDO]

Mensagem por Mauro Coutinho »

Mikel, é sempre ver que o pouco que aprendemos conseguimos ajudar.
Sobre este Evento podemos até abrir um tópico para não ficarmos postando neste já resolvido, mas por hora de uma olhada neste link onde tudo é criado em tempo de excecução :

Create User Form Using VBA
http://www.tek-tips.com/faqs.cfm?fid=5757

Tambem foi discutido no link abaixo:
inserir controle em tempo de execução
http://www.planilhando.com.br/forum/vie ... =10&t=2858

[]s


Edcronos
Manda bem
Manda bem
Mensagens: 122
Registrado em: Qua Abr 02, 2014 2:23 am

Re: OBJETO CRIADO EM TEMPO DE EXECUÇÃO. EVENTOS? [RESOLVIDO]

Mensagem por Edcronos »

ola
a um tempo atras eu tinha me aventurado em fazer um formulario em tempo de execução
mas foi para criar objetos fixos para
eu até tinha aberto um topico no planilhando mas como ninguem se interessou, acabei fazendo por mim mesmo
no caso se podia escolher o tipo de objeto, quantidade, o tamanho e espaço entre eles entre outras coisas
infelizmente numa limpeza acabei excluindo e só fui me dar conta tempo depois quando realmente precisei

até tentei refazer mas não tive animo pq estruturar um form já chato, imagina estruturar um que vai criar outros
a ideia era cria grandes conjuntos de objetos ou até um form inteiros escolhendo os tipos, quantidade e distribuição
ou criar outros objetos a partir de um já existente em algum form mudando apena a numeração
Anexos
cria objetos formularios2.rar
(101.84 KiB) Baixado 381 vezes


RodrigoVale
Acabou de chegar
Acabou de chegar
Mensagens: 6
Registrado em: Qui Jul 30, 2015 9:08 am

OBJETO CRIADO EM TEMPO DE EXECUÇÃO. TREEVIEW1

Mensagem por RodrigoVale »

Mauro, bom dia!

Novamente eu com minhas duvidas em objetos criados em tempo de execução.

Agora, gostaria de saber se tem como criar o objeto TreeView1 em tempo de execução.

Explico o motivo:

Não sei o porque, quando adiciono este objeto no form!!! Ele não abre em algumas versões do excel e inclusive em outros computadores com a mesma versão do excel.

Um exemplo é que quando rodo a planilha na minha máquina o controle treeview funciona corretamente. Todavia, se salvo e fecho, quando vou abrir em outra maquina ele fala que este objeto não esta disponível.

Creio que seu eu criar ele em tempo de execução. Vai rodar em qualquer versão do excel.


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Responder