Alguna vez me vi obligado hacer algo parecido, fue como una especie de consulta de una base de
datos. Lo resolví así
REM ***** BASIC *****
Option Explicit
Sub BuscarFactura()
Dim Fila As Long, Item As Long, Registro As Long
Dim Celda As Variant
Dim oNfac As Object, oCodcliente As Object, oFecha As Object, oFpago As Object, oCampo As Object,
oTCom As Object, oDesc As Object
Dim dNfac As Object, dCodcliente As Object, dFecha As Object, dFpago As Object, dCampo As Object,
dTCom As Object, dDesc As Object
Dim Docu As Object, HojaDestino As Object, HojaOrigen As Object, HojaOrigen2 As Object
'Definimos los objetos documento de trabvajo, hoja de destino y de origen de los datos
Docu = ThisComponent
HojaOrigen = Docu.getSheets().getByName ( "REGVENTAS" )
HojaOrigen2 = Docu.getSheets().getByName ( "GASTOS" )
HojaDestino = Docu.getSheets().getByName ( "DEVFACTURA" )
Call DesbloqueoHojas ()
'Se debe leer la factura que vamos a buscar
dNfac = HojaDestino.getCellRangeByName ( "J6" )
If dNfac.getType() = 0 Then
MsgBox "Debe ingresar un número de factura valido."
else
'Buscamos en la tabla de registro de ventas la factura correspondiente
Fila = 1
oNfac = HojaOrigen.getCellByPosition ( 1 , Fila )
Do while oNfac.getType() <> 0
If oNfac.getString() = dNfac.getString() Then
Registro = Fila
End If
Fila = Fila + 1
oNfac = HojaOrigen.getCellByPosition ( 1 , Fila )
Loop
'Ahora debemos poner los datos de la compra en el formulario de devolución de ventas
'Definimos los datos de origen y los campos destino
oCodcliente = HojaOrigen.getCellByPosition ( 3 , Registro )
oFecha = HojaOrigen.getCellByPosition ( 2 , Registro )
oFpago= HojaOrigen.getCellByPosition ( 7 , Registro )
'Un ciclo mas para la busqueda del descuento si aplica.
'Buscamos en la tabla de registro de ventas la factura correspondiente
Fila = 1
Registro = 0
oNfac = HojaOrigen2.getCellByPosition ( 1 , Fila )
Do while oNfac.getType() <> 0
If oNfac.getString() = dNfac.getString() Then
Registro = Fila
End If
Fila = Fila + 1
oNfac = HojaOrigen2.getCellByPosition ( 1 , Fila )
Loop
If Registro = 0 Then
dDesc = HojaDestino.getCellRangeByName ( "I27" )
dDesc.setValue(0,0)
Else
oDesc = HojaOrigen2.getCellByPosition( 5 , Registro )
dDesc = HojaDestino.getCellRangeByName ( "I27" )
dDesc.setValue(oDesc.getValue())
End If
dCodcliente = HojaDestino.getCellRangeByName ( "D8" )
dFecha = HojaDestino.getCellRangeByName ( "G6" )
dFpago = HojaDestino.getCellRangeByName ( "E26" )
'Ponemos los datos encontrado en el formulario
dCodcliente.setString(oCodcliente.getString())
dFecha.setString(oFecha.getString())
dFpago.setString(oFpago.getString())
End if
'Ahora buscamos en la tabla del cardex los productos comprados con la factura
'que estamos buscando.
HojaOrigen = Docu.getSheets().getByName ( "CARDEX" )
'Se debe leer la factura que vamos a buscar y se limplia los registros de busquedas anteriores
dCampo = HojaDestino.getCellRangeByName ( "B15:J24" )
dCampo.clearcontents(5)
dNfac = HojaDestino.getCellRangeByName ( "J6" )
If dNfac.getType() = 0 Then
MsgBox "Debe ingresar un número de factura valido."
else
'Buscamos en la tabla de cardex los items de la factura correspondiente
Fila = 1
oNfac = HojaOrigen.getCellByPosition ( 1 , Fila )
For Item = 14 to 23
Do while oNfac.getType() <> 0
If oNfac.getString() = dNfac.getString() Then
Registro = Fila
oNfac =HojaOrigen.getCellByPosition ( 1 , Registro ) 'Codigo del producto
dCampo = HojaDestino.getCellByPosition ( 1 , Item )
dCampo.setValue(oNfac.getValue())
oNfac = HojaOrigen.getCellByPosition ( 3 , Registro ) 'Presentación del producto
dCampo = HojaDestino.getCellByPosition ( 3 , Item )
dCampo.setString(oNfac.getString())
oNfac = HojaOrigen.getCellByPosition ( 4 , Registro ) 'Nombre o descripción del
producto
dCampo = HojaDestino.getCellByPosition ( 4, Item )
dCampo.setString(oNfac.getString())
oNfac = HojaOrigen.getCellByPosition ( 7 , Registro ) 'Cantidad del producto
dCampo = HojaDestino.getCellByPosition ( 6 , Item )
dCampo.setValue(oNfac.getValue())
oNfac = HojaOrigen.getCellByPosition ( 8 , Registro ) 'Precio del producto
dCampo = HojaDestino.getCellByPosition ( 7 , Item )
dCampo.setValue(oNfac.getValue())
oNfac = HojaOrigen.getCellByPosition ( 10 , Registro ) 'porcentaje de iva
dCampo = HojaDestino.getCellByPosition ( 9 , Item )
dCampo.setValue(oNfac.getValue())
Item = Item + 1
End If
'encontrado el primir item forzamos el incremento de las filas para continuar
'con la busqueda de los demas items
Fila = Fila + 1
oNfac = HojaOrigen.getCellByPosition ( 0 , Fila )
Loop
Next
End If
call BloqueoHojas ()
End Sub
Julián David Montoya Restrepo Ingeniero Industrial Universidad de Antioquia
Vereda Viboral
El Carmen de Viboral - Antioquia
Cel : 3003725984
El Jueves 26 de marzo de 2015 18:33, "negrolito@mailoo.org" <negrolito@mailoo.org> escribió:
Hola listeros:
Mi consulta (un tanto complicada en el título) consiste en que deseo
hacer una función en basic que me permite ver una serie de valores en un
rango de celdas en una hoja de cálculo espécifica.
Function puntosDeMontaje(inicio,largo)
while inicio =< final
inicio = inicio + 60
End while
End Function
No tengo idea de cómo ir presentando cada valor en distintas celdas, una
abajo de otra.
Si me pueden orientar muy agradecido.ómo
--
Para instrucciones sobre darse de baja envíe un mensaje a: users+unsubscribe@es.libreoffice.org
¿Problemas? http://es.libreoffice.org/asistencia/listas-de-correo/como-darse-de-baja/
Guías para envío + más: http://wiki.documentfoundation.org/Netiquette/es
Archivo de la lista: http://listarchives.libreoffice.org/es/users/
Todos los mensajes enviados a esta lista serán archivados públicamente y no pueden ser eliminados
--
Para instrucciones sobre darse de baja envíe un mensaje a: users+unsubscribe@es.libreoffice.org
¿Problemas? http://es.libreoffice.org/asistencia/listas-de-correo/como-darse-de-baja/
Guías para envío + más: http://wiki.documentfoundation.org/Netiquette/es
Archivo de la lista: http://listarchives.libreoffice.org/es/users/
Todos los mensajes enviados a esta lista serán archivados públicamente y no pueden ser eliminados
Context
Privacy Policy |
Impressum (Legal Info) |
Copyright information: Unless otherwise specified, all text and images
on this website are licensed under the
Creative Commons Attribution-Share Alike 3.0 License.
This does not include the source code of LibreOffice, which is
licensed under the Mozilla Public License (
MPLv2).
"LibreOffice" and "The Document Foundation" are
registered trademarks of their corresponding registered owners or are
in actual use as trademarks in one or more countries. Their respective
logos and icons are also subject to international copyright laws. Use
thereof is explained in our
trademark policy.