Se puede invocar un evento en un control al ocurrir otro?

Samuel Cano

Board Regular
Joined
Jun 24, 2002
Messages
62
Se puede invocar un evento en un control al ocurrir otro, en otro control?

Por ejemplo

que el evento Change de un ComboBox
ejecute el código del evento Change en un Cuadro de Texto


Verán, tengo
un ComboBox con una lista
una etiqueta con precios
un Cuadro de Texto para introducir cantidades
y una Etiqueta para mostrar el resultado de multiplicar precio por cantidad

la formula que calcula, la tengo en el evento Change del cuadro de texto

y quiero que cuando recorra el ComboBox se recalcule el total

he tratado varias formas pero no lo consigo, como por ejemplo: poner el código en un procedimiento aparte y llamarlo con Call y otras, pero bueno.

Ahi queda, gracias de antemano y que estén bien.

- Samuel
 

Excel Facts

Which Excel functions can ignore hidden rows?
The SUBTOTAL and AGGREGATE functions ignore hidden rows. AGGREGATE can also exclude error cells and more.
Bueno, sí, se puede usar los eventos para cambiar, pero resulta un muchos recorridos. Es más fácil usar salidas asi que se recalcula solamente una vez en vez de cada vez que la persona imprima una tecla.
Code:
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    On Error GoTo ErrHandler
    With Me
        .TextBox3 = Format(CDbl(.TextBox1) * CDbl(.TextBox2), "$#,##0.00")
    End With
    Exit Sub
ErrHandler:
    Me.TextBox3 = "$ - "
End Sub

Private Sub TextBox2_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    On Error GoTo ErrHandler
    With Me
        .TextBox3 = Format(CDbl(.TextBox1) * CDbl(.TextBox2), "$#,##0.00")
    End With
    Exit Sub
ErrHandler:
    Me.TextBox3 = "$ - "
End Sub

Private Sub TextBox3_Change()
    MsgBox "Cambié", vbInformation
End Sub

Pero sí, se puede llamar las funcions directamente si se necesita. Generalmente no es necesario.

Code:
Private Sub CommandButton1_Click()
    Call TextBox3_Change
End Sub
 
Upvote 0
Anotado!...

Gracias Greg,

Hoy todo el día buscandole una solución y nada, en un acto desesperado escribí todo el código de recálculo, "cuadro de Texto" por "cuadro de texto" y qué te puedo decir... funciona pero es laaargo...

Como sea, tu ayuda me servirá para simplificarlo, aunque bueno, ... debo estudiarlo con más calma para comprenderlo... :lol:

Lo que si voy a probar de ya, es la llamada a eventos de controles.

Gracias, gracias, gracias....

desde México

-Samuel
 
Upvote 0
Greg: (no soy muy afecto a los formularios, pero bueno), yendome un poco de tema:

¿Los eventos de controles en Userforms, se detienen con Application.EnableEvents = FALSE?
¿Puede ser que exista algun comportamiento diferente al respecto, si se ejecuta step-by-step, que en ejecucion?
GALI
 
Upvote 0
¿Los eventos de controles en Userforms, se detienen con Application.EnableEvents = FALSE?
~Gali
No. Haga un Userform on un Textbox y dos botones. Con el siguiente:
Code:
Private Sub CommandButton1_Click()
    With Application
        .EnableEvents = Not .EnableEvents
        Me.CommandButton1.Caption = .EnableEvents
    End With
End Sub

Private Sub CommandButton2_Click()
    MsgBox "My click event still works"
End Sub

Private Sub TextBox1_Change()
    With Me
        .CommandButton2.Caption = .TextBox1.Text
    End With
End Sub
¿Ves? Apagar o encender eventos no tiene impacto s/ los eventos del UserForm, solamente de Excel en sí.

¿Puede ser que exista algun comportamiento diferente al respecto, si se ejecuta step-by-step, que en ejecucion?
~GALI

Para mi, no. El comportamiento es lo mismo en ambas situaciones, "en vivo" o yendo paso-por-paso.
 
Upvote 0
Gracias Greg, confirmas mi hipótesis experimental....
Entonces, ademas de tratar de evitar situaciones que desencadenen esas "explosiones en cadena" ¿hay algo más que se pueda hacer?

GALILEOGALI
 
Upvote 0

Forum statistics

Threads
1,223,969
Messages
6,175,691
Members
452,667
Latest member
vanessavalentino83

We've detected that you are using an adblocker.

We have a great community of people providing Excel help here, but the hosting costs are enormous. You can help keep this site running by allowing ads on MrExcel.com.
Allow Ads at MrExcel

Which adblocker are you using?

Disable AdBlock

Follow these easy steps to disable AdBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the icon in the browser’s toolbar.
2)Click on the "Pause on this site" option.
Go back

Disable AdBlock Plus

Follow these easy steps to disable AdBlock Plus

1)Click on the icon in the browser’s toolbar.
2)Click on the toggle to disable it for "mrexcel.com".
Go back

Disable uBlock Origin

Follow these easy steps to disable uBlock Origin

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back

Disable uBlock

Follow these easy steps to disable uBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back
Back
Top