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, "[email protected]"
<[email protected]> 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:
[email protected]
¿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:
[email protected]
¿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