Saltar al contenido

Como Renombrar un TEXTBOX en tiempo de ejecucion.


Recommended Posts

publicado

Saludos de nuevo y buenas tardes.

Desearia saber como puedo renombar un TextBox dentro de un formulario y mas concretamente en el evento Initialize  del FORM. He aplicado esta sentencia pero obtengo un error, y no se como resolverlo. Gracias.

ThisWorkbook.VBProject.VBComponents("FRM_Benef_Riesgo").Designer.Controls("TXT_Precio").Name = "TXT_Nuevo_Precio"

 

Muchas gracias,

Josep Miquel.

publicado
hace 1 hora, Josep dijo:

Saludos de nuevo y buenas tardes.

Desearia saber como puedo renombar un TextBox dentro de un formulario y mas concretamente en el evento Initialize  del FORM. He aplicado esta sentencia pero obtengo un error, y no se como resolverlo. Gracias.

ThisWorkbook.VBProject.VBComponents("FRM_Benef_Riesgo").Designer.Controls("TXT_Precio").Name = "TXT_Nuevo_Precio"

 

Muchas gracias,

Josep Miquel.

Hola @Josep, no es mejor usar la propied .Tag ?

Cargas si quieres uno en el evento  Initialize y al pulsar un botón o ejecutar una macro lo vas cambiando. 

Saludos 

 

publicado
hace 2 horas, Josep dijo:

Saludos de nuevo y buenas tardes.

Desearia saber como puedo renombar un TextBox dentro de un formulario y mas concretamente en el evento Initialize  del FORM. He aplicado esta sentencia pero obtengo un error, y no se como resolverlo. Gracias.

ThisWorkbook.VBProject.VBComponents("FRM_Benef_Riesgo").Designer.Controls("TXT_Precio").Name = "TXT_Nuevo_Precio"

 

Muchas gracias,

Josep Miquel.

La sentencia es correcta, pero no puedes ejecutarla dentro del formulario, debes hacerlo en un módulo.

Pero debes tener en cuenta que el nombre de los procedimientos asociados a los eventos no cambiarán y permanecerán con el nombre antiguo.

¿Porqué no explicas cual es el problema que pretendes resolver?

publicado

Buenos dias a todos y especialmente a DiegoLG, Antoni y Benito Bartolome por su interes y respuestas.

Os adjunto el fichero de Excel con el codigo hasta el momento desarrollado, el cual tiene por objetro evaluar y determinar el Riesgo-Beneficio de una entrada en un valor de Bolsa. Concretamente el problema que se plantea es que una entrada puede ser en "Largo" (Comprando y vendiendo) o "Corto" (Vendiendo y despues comprando).

Hay un Combobox que se encarga de seleccionar que tipo de Posición se adoptará, y en funcion de la posicion adopta las etiquetas y textbox de el Objetivo y Stop-Loss se invierten segun el sentido de la operación. Pues bien aqui nace el problema que tengo y es que cuando se produzca eas dos alternativas los valores que guardan los textbox se tienen que cambiar, y la unica forma que se me ocurre es renombrando sus respectivos "Name", de ahi que planteara el inicio del post.

Agradezco una vez más vuestro interes y colaboración, como en anteriores ocasiones.

Recibir un cordial saludo, quedando a la espera de vuestras sugerencias y soluciones.

P.D. Cualquier detalle que podais apreciar el cual pueda ser mejorado, os agrdecere vuestro comentario.

Saludos,

Josep Miquel.

Libro1.xlsm

publicado

Mira, intuyo lo que quieres hacer, pero creo que tienes mal planteado el uso de los eventos.

Si explicas con exactitud los cálculos que hay que hacer en cada caso, lo replanteamos.

  • 2 weeks later...
publicado

Buenos dias a todos y especialmente a DiegoLG, al cual pido disculpas por el retraso en mi respuesta, y que ha sido ocasionado por  motivos familiares. Gracias.

Agradezco tu respuesta con su solución, pero no me acabana de gustar porque salvo error, creo que implicaria duplicar todos los controles de la pestaña Comprando con la pestaña vendiendo.

Yo insistira en la sentencia "ThisWorkbook.VBProject.VBComponents("FRM_Benef_Riesgo").Designer.Controls("TXT_Precio").Name = "TXT_Nuevo_Precio" , la cual es mas practica, pero el problema es que no me funciona en la aplicación.

Vere de googlear por internet a ver si descubro mas información son esa sentencia, y asi puedo establecerla en mi codigo.

Muchas gracias, y disculpame por el retraso en mi respuesta.

Saludos,

Josep Miquel.

 

 

 

publicado
En 24/2/2023 at 3:57 , Antoni dijo:

Si explicas con exactitud los cálculos que hay que hacer en cada caso, lo replanteamos.

Estimado @Josep Como dijo @Antonitienes que explicar con exactitud, el archivo que adjuntaste en su momento, la verdad no veo información.

Venta:

- Que nombre debe de llevar las etiquetas de los label´s?

- En donde se tiene que registrar

Compra: (pasa lo mismo como la venta)

 

Saludos.

Diego.

publicado

Saludos de nuevo Diego. Voy a intentar explicar con el mayor detalle posible la problematica planteada y alguna solucion que me ronda por la cabeza. Para ello subo de nuevo el archivo, esta vez funcional ya, para que puedas seguirlo conjuntamente con las explicaciones siguientes, focalizando el problema llegado a el.

Cuando arrancas el formulario, llegado al Combobox Posicion, este ofrece la posibilidad de escoger las opciones Largos y Cortos.

Inicialmente  el combobox Posicion esta asignando la opcion "Largos" para que los calculos se realicen de forma que el Objetivo sea mayor que Precio Actual, y este sea mayor que Stop-Loss. El problema aparece cuando al Combobox se ajusta a Cortos, que si te fijas los labels de Objetivo y Stop-Loss se invierten en sus posiciones para que los calculos sean a la inversa de los comentados, o sea Stop-Loss mayor que Precio Actual y este ultimo sea mayor que Objetivo.

Si tuviera la posibilidad de cambiar simultaneamente con el combobox, los names de Objetivo para que fuera Stop-Loss, y el name de Stop-Loss para que fuera Objetivo, no existiria el problema que planteo.

Otra posibilidad que estoy valorando es asignar al name de Objetivo un nombre poco descriptivo como por ejemplo TextBoxA y al name Stop-Loss el de TextBoxB, y utilizarlos alternativamente cuando el ComboBox Posición cambiara, de forma que en la Posicion "Largos" el valor del TextBoxA fuera para el Objetivo y el TextBoxB para el Stop-Loss y viceversa cuando el combo indicara Cortos. o sea el TextBoxA fuera para el Stop-Loss y el TextBoxB para el Objetivo.

Bueno... Hasta aqui "la paliza" (Perdona la expresión... ja.. ja..) A ver que sacamos en claro.

Te agradeceria que le dieras un vistazo al codigo en su conjunto, para intentar ver si fuera susceptible de mejoras conceptuales de la programación.

Saludos,
Josep Miquel.

Libro1.xlsm

publicado

La verdad me confunde ver tanto texto,

pero en resumen, lo que quiero entender, es que si seleccionas largo que te haga el calculo que corresponde, y si es corto igual que te haga el cálculo correspondiente, cierto?

algo así:

Private Sub combo_Change()
If combo.Text = "largo" Then
t1 = 1: t2 = 1
resultado = CDbl(t1.Text) + CDbl(t2.Text)
End If
If combo.Text = "corto" Then
t1 = 5: t2 = 5
resultado = CDbl(t1.Text) + CDbl(t2.Text)
End If
End Sub

Nota: solo es un ejemplo heee.

publicado

Buenos dias Diego, saludos de nuevo . Gracias por tu respuesta.

Al final voy a utilizar la idea que ya planteaba en mi anterior post:

"Cuando arrancas el formulario, llegado al Combobox Posicion, este ofrece la posibilidad de escoger las opciones Largos y Cortos.

Inicialmente  el combobox Posicion esta asignando la opcion "Largos" para que los calculos se realicen de forma que el Objetivo sea mayor que Precio Actual, y este sea mayor que Stop-Loss. El problema aparece cuando al Combobox se ajusta a Cortos, que si te fijas los labels de Objetivo y Stop-Loss se invierten en sus posiciones para que los calculos sean a la inversa de los comentados, o sea Stop-Loss mayor que Precio Actual y este ultimo sea mayor que Objetivo.",

y que es de alguna manera similar a la que propones utilizando el evento Change del Combo.

Gracias de nuevo.

Saludos, Josep Miquel.

P.D. No he querido extenderme mas para no confundirte.

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.