Vídeo recomendado
https://youtu.be/diWPPPhW-9E
https://youtu.be/diWPPPhW-9E
OBJETO CRIADO EM TEMPO DE EXECUÇÃO. EVENTOS? [RESOLVIDO]
-
- Acabou de chegar
- Mensagens: 6
- Registrado em: Qui Jul 30, 2015 9:08 am
OBJETO CRIADO EM TEMPO DE EXECUÇÃO. EVENTOS? [RESOLVIDO]
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.
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.
- Mauro Coutinho
- 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
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 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.
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 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.
-
- 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
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!
É, 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!
- Mauro Coutinho
- 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
Se foi útil é só clicar na mãozinha agradecendo, e qualquer duvida retorne.
[]s
[]s
- Mikel Silveira Fraga
- 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
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.
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
- Mauro Coutinho
- 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]
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 :
Agora crie um Modulo de Classe e renomeie para "EventClassModule" e cole as instruções abaixo :
Desta forma em cada Case podemos definir uma ação diferente para o Botão clicado.
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
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
- Mikel Silveira Fraga
- 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]
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.
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.
- Mauro Coutinho
- 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]
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
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
Re: OBJETO CRIADO EM TEMPO DE EXECUÇÃO. EVENTOS? [RESOLVIDO]
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
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
-
- Acabou de chegar
- Mensagens: 6
- Registrado em: Qui Jul 30, 2015 9:08 am
OBJETO CRIADO EM TEMPO DE EXECUÇÃO. TREEVIEW1
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.
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.