Olá amigos de fórum, estou com uma dúvida um tanto que boba mas minha cabeça ainda não conseguiu pensar em algo para tal problema.
Imagine duas textbox:
TextBox1, TextBox2
O que eu preciso é, num Evento BeforeUpdate, por exemplo, digitar uma expressão numérica no TextBox1. Exemplo "10+10+10" e o resultado (30) ser exibido na TextBox2.
DGAF / DVGD - Divisão de Gestão de Documentos
Rafael A. Guimarães
raguimaraes@fazenda.rj.gov.br
Exemplo, não muito elegante...
Private Sub TextBox1_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
Range("A1").Formula = "=" & TextBox1.Value
TextBox2 = Range("A1").Value
End Sub
Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel
Então, o que eu queria era exatamente eliminar esse método.
Queria utilizar algum tipo de conversão ou alguma variável, mas até agora não consegui bolar nada.
DGAF / DVGD - Divisão de Gestão de Documentos
Rafael A. Guimarães
raguimaraes@fazenda.rj.gov.br
Em vez de usar uma célula, vc pode usar um nome (não é uma variável, mas chega um pouco mais perto).
Fiz este teste e deu certo:
Sub teste() Dim txt1 Dim txt2 txt1 = "10+10+10" ActiveWorkbook.Names.Add Name:="resultadotxt1", RefersTo:="=" & txt1 txt2 = Evaluate(ActiveWorkbook.Names("resultadotxt1").Value) MsgBox txt2 End Sub
Para o teu caso, deve ser assim:
Private Sub TextBox1_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean) ActiveWorkbook.Names.Add Name:="resultadotextbox1", RefersTo:="=" & TextBox1.Value TextBox2 = Evaluate(ActiveWorkbook.Names("resultadotxt1").Value) End Sub
Abs
Lembre-se de AGRADECER aos que te ajudaram, e de marcar o tópico como [Resolvido]
Gente que cuida de gente.
Gilmar
Obrigado por responder.
Então, nos dois casos, o código só está aceitando o procedimento uma única vez.
DGAF / DVGD - Divisão de Gestão de Documentos
Rafael A. Guimarães
raguimaraes@fazenda.rj.gov.br
Quando vi o post, me veio que eu já havia respondido algo parecido, então na pesquisa encontrei o tópico abaixo, que por sinal é seu tambem e deu como Resolvido.
Qual a diferença entre eles ?
TextBox "entender" fórmulas
Mensagempor bilokas » Ter Set 23, 2014 10:50 am
viewtopic.php?f=10&t=13027
[]s
Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel
Então Mauro,
No primeiro momento o usuário iria realizar operações simples de adição e subtração.
Agora, será necessário realizar o cálculo de expressões mais complexas.
Até o presente momento eu consegui resolver da seguinte forma:
Private Sub TextBox1_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean) Resultado = Application.Evaluate(TextBox1.Value) TextBox2.Value = Resultado End Sub
Me desculpe a duplicidade de tópicos, mas na verdade a minha necessidade também evoluiu um pouco. De qualquer forma agradeço sempre pela disposição da galera aqui em sempre ajudar.
DGAF / DVGD - Divisão de Gestão de Documentos
Rafael A. Guimarães
raguimaraes@fazenda.rj.gov.br
Ops, desculpe. cometi um erro com os nomes.
O primeiro exemplo, que testei, estava funcionando. O segundo, para tua necessidade, tinha um erro aqui:
Private Sub TextBox1_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
ActiveWorkbook.Names.Add Name:="resultadotextbox1", RefersTo:="=" & TextBox1.Value
TextBox2 = Evaluate(ActiveWorkbook.Names("resultadotxt1").Value)
End Sub
Agora deve funcionar:
Private Sub TextBox1_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean) ActiveWorkbook.Names.Add Name:="resultadotextbox1", RefersTo:="=" & TextBox1.Value TextBox2 = Evaluate(ActiveWorkbook.Names("resultadotextbox1").Value) End Sub
Lembre-se de AGRADECER aos que te ajudaram, e de marcar o tópico como [Resolvido]
Gente que cuida de gente.
Gilmar