OLE Excel ComboBox

OLE Excel ComboBox

Postby Enrrique Vertiz » Thu Nov 27, 2014 5:25 am

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.1026X, Fwh 24.02, MySQL 8.0.X, SQLLIB 1.9m
Enrrique Vertiz
 
Posts: 519
Joined: Fri Oct 07, 2005 2:17 pm
Location: Lima - Peru

Re: OLE Excel ComboBox

Postby Sebastián Almirón » Thu Nov 27, 2014 9:07 am

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.)
User avatar
Sebastián Almirón
 
Posts: 155
Joined: Mon Dec 12, 2005 9:56 am
Location: Moralzarzal - Spain

Re: OLE Excel ComboBox

Postby Enrrique Vertiz » Thu Nov 27, 2014 6:44 pm

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.1026X, Fwh 24.02, MySQL 8.0.X, SQLLIB 1.9m
Enrrique Vertiz
 
Posts: 519
Joined: Fri Oct 07, 2005 2:17 pm
Location: Lima - Peru

Re: OLE Excel ComboBox

Postby Enrrique Vertiz » Fri Nov 28, 2014 3:36 pm

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.1026X, Fwh 24.02, MySQL 8.0.X, SQLLIB 1.9m
Enrrique Vertiz
 
Posts: 519
Joined: Fri Oct 07, 2005 2:17 pm
Location: Lima - Peru

Re: OLE Excel ComboBox

Postby Sebastián Almirón » Mon Dec 01, 2014 9:18 am

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 los campos 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: 155
Joined: Mon Dec 12, 2005 9:56 am
Location: Moralzarzal - Spain

Re: OLE Excel ComboBox

Postby Sebastián Almirón » Mon Dec 01, 2014 4:42 pm

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
User avatar
Sebastián Almirón
 
Posts: 155
Joined: Mon Dec 12, 2005 9:56 am
Location: Moralzarzal - Spain

Re: OLE Excel ComboBox

Postby Enrrique Vertiz » Mon Dec 01, 2014 8:46 pm

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.1026X, Fwh 24.02, MySQL 8.0.X, SQLLIB 1.9m
Enrrique Vertiz
 
Posts: 519
Joined: Fri Oct 07, 2005 2:17 pm
Location: Lima - Peru


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: cmsoft, Google [Bot] and 52 guests