|
NavegaciónInicio de sesiónEn lÃneaEn este momento hay 0 usuarios y 25 invitados en lÃnea.
|
Recorrer objetos en parejas![]() Hola Tengo una hoja donde hay una lista con varias columnas. La primera es un nombre, y a partir de ahí, las demás columnas son datos o cálculos. Quiero que al darle a un botón me presente un formulario donde he colocado una serie de textbox y combobox relacionados. En el texbox pondré números (cantidades) y en el combo puedo seleccionar entre todos los nombres que tengo en la columna A. Hasta aquí no tengo problemas. La duda viene en lo siguiente. Al darle al botón Ok la macro tiene que recorrer los controles de manera que identifique cada textbox con un combo. El resultado debe ser operar con el número del textbox en una columna determinada, pero solo en la fila que le corresponde según la selección que se haya hecho en el combo correspondiente. Si no hubiera esa relación entre los componentes diferentes, la solución sería sencilla, y es la que utilizo para borrar los controles al activar el formulario:
Solución obtenida fácilmente de internet :P Pero no sé cómo relacionar en el código el txtbox con el combo.
Muchas gracias
Enviado por Cron el 16 Julio, 2010 - 09:20. ![]() Re: Recorrer objetos en parejasEnviado por Cron el 16 Julio, 2010 - 09:56.
Gracias por contestar tan rápido. Ese no es mi problema. Relleno los datos del combo sin problemas. La resolución también la hago sin problemas, porque me he creado una hoja auxiliar donde calculo la posición de lo que aparezca en el combo, y luego es sencillo resolver el tema con ActiveCell.Offset El problema lo tengo en medio. Lo que hago ahora es ir pareja por pareja y repitiendo el código para cada pareja de controles. Algo así:
A partir de aquí repito el código para todas las parejas de controles TextBox + ComboBox Me gustaría poder hacer un bucle For...Next que cuando trabaje con el ComboBox15 también actúe con el TextBox15, sin tener que repetir el código 15 veces.
Gracias ![]() Re: Recorrer objetos en parejasEnviado por pacomegia el 16 Julio, 2010 - 10:15.
¿por qué no utilizas el nombre del control para referirte a él? emplea la colección Controls del formulario, por ejemplo
también puedes hacer un bucle por todos estos controles (no distingue por tipos). Dentro del bucle comprueba por ejemplo su nombre
pongo Me en estos ejemplo porque supongo que el código está dentro del propio formulario. ------ ![]() Re: Recorrer objetos en parejasEnviado por Cron el 16 Julio, 2010 - 10:36.
Pues me acabas de dar una idea con lo de Me.Controls("textbox1") No sabía que me podía referir a los controles así. Haré un bucle con una variable byte que haga de contador y utilizaré un par de variables de texto para poner los nombres. Es tan sencillo como llamar a Me.Controls(variablecombo) o (variabletext), habiendo dado previamente a estas variables el valor de "comboBox"+contador o de "textbox"+contador Si te parece, lo pruebo y si funciona copio aquí el código.
Muchas gracias. ![]() Re: Recorrer objetos en parejasEnviado por Cron el 16 Julio, 2010 - 11:10.
Parece que funciona, aunque no he encontrado la manera de "concatenar" un string con el valor de una variable byte. Lo que he hecho es volver a apoyarme en mi hoja de apoyo de cálculos y utilizar directamente la orden "concatenar" de Excel, tomando posteriormente los valores de las celdas. Queda algo como esto:
|
cargando...
Buscar en necesitomas.comExcelómetroTemas nuevosLo más vistoHoy: |
Re: Recorrer objetos en parejas
no sé si lo he entendido muy bien.a ver si esta pista te sirve:
se trataría de encontrar la fila donde se encuentra el nombre que has elegido en el combo
si fuese una fórmula de excel yo emplearía la función Coincidir para encontrar la posición de ese nombre dentro de la lista de nombres.
Bueno, pues también puedes utilizar las funciones de Excel dentro del código VBA (lo único que con su nombre en inglés y no todas las funciones están disponibles. En concreto la función coincidir sí está)
Application.WorksheetFunction.Match(...
------
Ya sé Excel, pero necesito más ahora en pdf