Jump to content

Macros/Calc/ba029/es

From The Document Foundation Wiki
This page is a translated version of the page Macros/Calc/ba029 and the translation is 100% complete.


Resumen

Esta página proporciona un procedimiento de macro de LibreOffice Basic que crea un filtro avanzado. Es un ejemplo extraído del Capítulo 13 ("Calc como base de datos") de la Guía de Calc 7.0.

Descripción

Aplicar un filtro avanzado con una macro funciona de manera similar a configurar un filtro estándar. La diferencia clave es que el rango de celdas que contiene los criterios del filtro se usa para crear el descriptor de filtro. La siguiente macro demuestra cómo se puede hacer usando el metodo CreateFilterDescriptorByObject. Se utilizan las celdas de la Hoja1, de A1 a H11 (calificaciones de estudiantes) como el intervalo de datos y las celdas de la hoja2, de A1 a H3 como el intervalo de criterios. La hoja de cálculo de descarga contiene dichos intervalos, de datos y de criterios.

Código

Sub AdvancedRangeFilter()
  Dim oSheet     'Una hoja del documento de Calc
  Dim oRanges    'Los intervalos con nombre.
  Dim oCritRange 'Intevalo que contiene los criterios de filtro
  Dim oDataRange 'Intervalo de los datos para filtrar
  Dim oFiltDesc  'Descriptor de filtro

  REM Intervalo que contiene los criterios de filtro
  oSheet = ThisComponent.getSheets().getByIndex(1)
  oCritRange = oSheet.getCellRangeByName("A1:H3")

  REM Puedes obtener el intervalo con los criterios de 
  REM filtro a partir de un intervalo con nombre
  REM oRanges = ThisComponent.NamedRanges
  REM oRange = oRanges.getByName("AverageLess80")
  REM oCritRange = oRange.getReferredCells()

  REM Los datos que se van a filtrar
  oSheet = ThisComponent.getSheets().getByIndex(0)
  oDataRange = oSheet.getCellRangeByName("A1:H11")

  oFiltDesc = oCritRange.createFilterDescriptorByObject(oDataRange)
  oDataRange.filter(oFiltDesc)
End Sub

Este documento de Calc contiene el código LibreOffice Basic.