FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour OLE Excel ComboBox
Posts: 582
Joined: Fri Oct 07, 2005 02:17 PM
OLE Excel ComboBox
Posted: Thu Nov 27, 2014 05: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 25.01, BCC74, MySQL 8.0.X, SQLLIB 1.9m
Posts: 166
Joined: Mon Dec 12, 2005 09:56 AM
Re: OLE Excel ComboBox
Posted: Thu Nov 27, 2014 09: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.)

Posts: 582
Joined: Fri Oct 07, 2005 02:17 PM
Re: OLE Excel ComboBox
Posted: Thu Nov 27, 2014 06: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 25.01, BCC74, MySQL 8.0.X, SQLLIB 1.9m
Posts: 582
Joined: Fri Oct 07, 2005 02:17 PM
Re: OLE Excel ComboBox
Posted: Fri Nov 28, 2014 03: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 25.01, BCC74, MySQL 8.0.X, SQLLIB 1.9m
Posts: 166
Joined: Mon Dec 12, 2005 09:56 AM
Re: OLE Excel ComboBox
Posted: Mon Dec 01, 2014 09: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

Posts: 166
Joined: Mon Dec 12, 2005 09:56 AM
Re: OLE Excel ComboBox
Posted: Mon Dec 01, 2014 04: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

Posts: 582
Joined: Fri Oct 07, 2005 02:17 PM
Re: OLE Excel ComboBox
Posted: Mon Dec 01, 2014 08: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 25.01, BCC74, MySQL 8.0.X, SQLLIB 1.9m

Continue the discussion