OLE Excel ComboBox

Post Reply
Enrrique Vertiz
Posts: 440
Joined: Fri Oct 07, 2005 2:17 pm
Location: Lima - Peru
Contact:

OLE Excel ComboBox

Post by Enrrique Vertiz »

Buenas noches

Estimados, no tengo idea de como hacer esto, creando una hoja Excel con TOLE, necesito crear un combobox de selección, por ejemplo en la columna 20 filas de la 1 a la 10 guardo 10 códigos, 001, 002, 010.
En la columna 1 quiero que me presente un Combobox para seleccionar los 10 códigos presentados en la columna 20, evitando asi los errores de digitación, se como hacerlo en el Excel pero necesito que el programa FWH lo haga al momento que creo la hoja, algo asi seria :

oSheet:Range( oSheet:Cells( 20, 1 ), oSheet:Cells( 20, 10) ):Select() (pongo como ejemplo el método, no tengo ni idea de como es pero algo asi seria ??)

Gracias ...
Enrrique Vertiz Pitta
Lima-Peru
xHb 1.23, Fwh 20.04, MySQL 5.7 - 8.0, SQLLIB 1.9m, SQLRDD
User avatar
Sebastián Almirón
Posts: 125
Joined: Mon Dec 12, 2005 9:56 am
Location: Moralzarzal - Spain

Re: OLE Excel ComboBox

Post by Sebastián Almirón »

Prueba algo así :

avalores := {}
for n = 1 to 10
aadd(avalores, oExcel:Cells(20,n))
next n

oexcel:Sheets(hoja):Activate() //Hoja donde estará el combobox
oexcel:Range(celda):Select() //Celda donde estará el combobox
oexcel:Selection:Validation:Delete()

for n = 1 to len(avalores)
oexcel:Selection:Validation:Add(3, 1, 1, avalores[n])
next n

oexcel:Selection:Validation:IgnoreBlank(.f.)
oexcel:Selection:Validation:ErrorTitle("Valor no permitido")
oexcel:Selection:Validation:ErrorMessage("Seleccione un valor de la lista")
oexcel:Selection:Validation:ShowError(.t.)
oexcel:Selection:Validation:ShowInput(.t.)
Enrrique Vertiz
Posts: 440
Joined: Fri Oct 07, 2005 2:17 pm
Location: Lima - Peru
Contact:

Re: OLE Excel ComboBox

Post by Enrrique Vertiz »

Saludos Sebastian

GRACIAS, por ahi van los tiros, lo estoy probando y ya pinta, ajusto y queda listo
GRACIAS nuevamente.
Enrrique Vertiz Pitta
Lima-Peru
xHb 1.23, Fwh 20.04, MySQL 5.7 - 8.0, SQLLIB 1.9m, SQLRDD
Enrrique Vertiz
Posts: 440
Joined: Fri Oct 07, 2005 2:17 pm
Location: Lima - Peru
Contact:

Re: OLE Excel ComboBox

Post by Enrrique Vertiz »

Sabastian, buenos dias

Ya funciona correctamente, pero el ComboBox va "eliminando" lineas cada vez que hago una seleccion, y deberian quedarse las opciones disponibles en cada linea, todas, sabes por casualdiad que debo hacer, quite :

oExcel:Selection:Validation:Delete()

Pero aun asi del combobox de seleccion me va borrando de una en una las opciones de seleccion por cada linea en la que voy seleccionando, GRACIAS
Enrrique Vertiz Pitta
Lima-Peru
xHb 1.23, Fwh 20.04, MySQL 5.7 - 8.0, SQLLIB 1.9m, SQLRDD
User avatar
Sebastián Almirón
Posts: 125
Joined: Mon Dec 12, 2005 9:56 am
Location: Moralzarzal - Spain

Re: OLE Excel ComboBox

Post by Sebastián Almirón »

Hola, no se porque te pasa eso. Yo en realidad los valores del combobox de las celdas los tomo de una dbf con la función de abajo y me funciona bien. Un usuario autorizado puede indicar en mi programa cuales son los valores del combobox admisibles para ciertas celdas y son muchas, se guardan en la dbf vversion, que tiene _ hoja, celda y valida (cada valor que puede tener el combobox).
Utilizo oexcel := CreateObject( "Excel.Application" )
Prueba a meter todo dentro del bucle, yo lo tengo así.
Saludos

function ponvalid()
sele vversion
go top
set order to 1
do whil !eof()
oexcel:Sheets(alltrim(hoja)):Activate()
oexcel:Range(alltrim(celda)):Select()
oexcel:Selection:Validation:Delete()
oexcel:Selection:Validation:Add(3, 1, 1, valida)
oexcel:Selection:Validation:IgnoreBlank(.f.)
oexcel:Selection:Validation:ErrorTitle("Valor no permitido")
oexcel:Selection:Validation:ErrorMessage("Seleccione un valor de la lista")
oexcel:Selection:Validation:ShowError(.t.)
oexcel:Selection:Validation:ShowInput(.t.)
skip
enddo
return
User avatar
Sebastián Almirón
Posts: 125
Joined: Mon Dec 12, 2005 9:56 am
Location: Moralzarzal - Spain

Re: OLE Excel ComboBox

Post by Sebastián Almirón »

Hola, perdoname pero el funcionamiento es distinto a lo que parecía.

Solo hay que pasarle a Validation:Add(3,1,1,cadena_de_datos_separados_por_punto_y_coma)

Me he liado porque yo en realidad tengo un campo más que es la version del libro y dependiendo de esta los valores pueden ser unos u otros, de ahí lo de utilizar un bucle que para ti no será necesario. En definitiva tiene que ser algo así:

oexcel:Sheets(alltrim(hoja)):Activate() //La hoja donde está la celda
oexcel:Range(alltrim(celda)):Select() // La celda
oexcel:Selection:Validation:Delete() // Si tenía un combobox anterior hay que borrarlo primero
oexcel:Selection:Validation:Add(3, 1, 1, cvalida) // La cadena de opciones separadas por punto y coma
oexcel:Selection:Validation:IgnoreBlank(.f.) //Si el valor se puede dejar en blanco
oexcel:Selection:Validation:ErrorTitle("Valor no permitido") //cabecera del mensaje si introducen un valor a mano que no esté en la lista
oexcel:Selection:Validation:ErrorMessage("Seleccione un valor de la lista") //Mensaje
oexcel:Selection:Validation:ShowError(.t.) //Si se muestran los errores o no
oexcel:Selection:Validation:ShowInput(.t.) //Si se puede poner el valor a mano

La cadena debe terminar en punto y coma o de lo contrario no deja elegir el ultimo valor

Espero que esta vez si
Enrrique Vertiz
Posts: 440
Joined: Fri Oct 07, 2005 2:17 pm
Location: Lima - Peru
Contact:

Re: OLE Excel ComboBox

Post by Enrrique Vertiz »

Sebastian, muchas gracias por tu tiempo.

Voy a revisar con tus indicaciones y les comento, gracias nuevamente.
Enrrique Vertiz Pitta
Lima-Peru
xHb 1.23, Fwh 20.04, MySQL 5.7 - 8.0, SQLLIB 1.9m, SQLRDD
Post Reply