Página 1 de 1

[RESUELTO] ComboBox en Cuadro de Dialogo Basic

NotaPublicado: Mié Ene 04, 2017 7:13 pm
por frainter
Hola muy buenas.
Pues lo primero un saludo para todos y lo segundo la esperanza de una solucion para mis comienzos en Libreoffice.
bien pues llevo ya varios excel convertidos a Libreoffice(mejor dicho:rehechos en Libreoffice), pero con este calc tengo problemas con un combobox situado en un formulario, ya e conseguido a base de mucho buscar que el combobox me liste una columna situada en la misma hoja, pero no consigo que el valor seleccionado en el combo me lo traslade a la primera celda vacia de otra columna(una sola columna).
Este es el codigo de la macro que e podido encontrar:

Código: Seleccionar todo   Expandir vistaContraer vista
Global oControl As Object
Sub Main
Dim oFormulario As Object
Dim HojaDatos As Object
Dim co1 As Long

   oFormulario = CargarDialogo( "Cctos" )
   oControl = oFormulario.getControl( "ComboBox1" )   
   HojaDatos = ThisComponent.getSheets.getByName( "Conceptos" )   
   co1 = 1
   Do Until HojaDatos.getCellByPosition(0,co1).getString = ""
      oControl.addItem( HojaDatos.getCellByPosition(0,co1).getString, oControl.getItemCount)
      co1 = co1 + 1
   Loop
   oFormulario.execute()
   oFormulario.dispose()
   
   
End Sub

Function CargarDialogo( Nombre As String ) As Object
   'Cargamos la librería Standard en memoria
   DialogLibraries.LoadLibrary( "Standard" )
   'Cargamos el cuadro de diálogo en memoria
   CargarDialogo = CreateUnoDialog( DialogLibraries.Standard.getByName( Nombre ) )
End Function


este codigo me lista los valores de la columna "A" de la hoja "Conceptos".

y me gustaria que el concepto seleccionado me lo plasmase en la columna "D" de la hoja "AnaMet" en la primera celda vacia que encuente.

Esperando su ayuda les quedo agradecido de antemano.
Saludos.

Re: ComboBox en Cuadro de Dialogo Basic

NotaPublicado: Mié Ene 04, 2017 7:58 pm
por mauricio
Así sin ver (ya no programo en Basic), con la propiedad Text del control deberías tener la selección.

value = oControl.Text

y este valor ponerlo en la celda que quieras con setString(value)

Usa cursores para encontrar la ultima fila usada, mira por aquí: https://wiki.openoffice.org/wiki/ES/Man ... n_Cursores

Saludos

P.D. Asegurate de que realmente quieres usar un Combobox, si deseas que el usuario seleccione una opción pero pueda escribir otras si quieres, si "solo" quieres que seleccione una de las disponibles, es mejor que uses un Listbox

Re: ComboBox en Cuadro de Dialogo Basic

NotaPublicado: Mié Ene 04, 2017 8:38 pm
por frainter
OK.
Gracias mauricio..
probare mañana aver que tal y ya te comento...y si, si necesito un Combo para poder tener la posibilidad de efectuar algun cambio en un momento preciso.
Gracias.

Re: ComboBox en Cuadro de Dialogo Basic

NotaPublicado: Jue Ene 05, 2017 12:28 pm
por frainter
Hola mauricio.
Pues aqui llevo probando ya bastante rato y no me da resultado(quizas al ser nuevo en libreoffice no sepa ensamblar las macros que difieren de las de excel de donde provengo).
Ademas creo entender que tendria que buscar con el cursor la celda vacia, y teniendo en cuenta que dicha celda pertenece a otra hoja distinta pues creo que perderia mucho tiempo en vez de ganar agilidad con la macro pertinente, asi pues decido seguir leyendo tu manual aver si encuentro alguna solucion o componenda que se adapte a mis necesidades.
Te agradezco tu ayuda y si no se te ocurre la solucion a mi necesidad por lo que dices que ya no programas en basic, pues doy por finalizado el tema.
Saludos

Re: ComboBox en Cuadro de Dialogo Basic

NotaPublicado: Jue Ene 05, 2017 3:51 pm
por mauricio
No, el algoritmo sería así...

1.- Haces referencia a la hoja de interes, eso ya lo haces en el código que muestras.
2.- Creas un cursor a partir de la celda de tus datos en dicha hoja
3.- Expandes el cursor a la región actual
4.- Obtienes la ultima fila usada y le sumas una

Todo esto viene, creo, bastante bien detallado y explicado en el vínculo que te pase, eso si, hay que leer paso a paso.

Si muestras el código que has probado yo o alguien más puede guiarte, solo sigue los paso que te he puesto.

Saludos

P.D. Encontrar la siguiente fila vacía es una pregunta que se ha hecho muchas veces en estos foros, y se ha respondido también muchas veces, solo, hay que buscar la respuesta.