Jump to content

Macros/Calc/ba020/es

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


Resumen:

Esta página proporciona un procedimiento de macro de LibreOffice Basic que ilustra el uso de referencias relativas con expresiones nombradas. Es un ejemplo extraído del Capítulo 13 ("Calc como base de datos") de la Guía de Calc 7.0.

Descripción

Si un intervalo con nombre usa direcciones de celda que no son absolutas, estas direcciones se referenciarán en relación con la dirección base del intervalo, que está definida por el tercer argumento del método addNewByName, Posición. Este comportamiento se ilustra en el siguiente código, donde la macro AddNamedFunction crea la expresión nombrada AddLeft. Esta expresión hace referencia a la ecuación A3+B3 con C3 como su dirección base. Debido a que se utilizan referencias relativas, AddLeft suma los valores de las dos celdas directamente a la izquierda de cualquier celda que contenga la fórmula "=AddLeft". Por ejemplo, si se hace referencia a AddLeft en la celda E5, sumará los valores en C5 y D5 (consulte la hoja de cálculo vinculada).

Consejo:
El código ilustra otro atributo poco conocido de Calc: los intervalos con nombre son un subconjunto de expresiones con nombre, que también pueden incluir fórmulas.

Código

Sub AddNamedFunction()
  Dim oSheet          'Hoja que contiene el intervalo oRange.
  Dim oCellAddress    'Dirección para referencias relativas.
  Dim oRanges         'La propiedad NamedRanges (nombres de intervalos).
  Dim oRange          'Intervalo de una sola celda
  Dim sName As String 'Nombre de la ecuación que se va a crear.

  sName = "AddLeft"
  oRanges = ThisComponent.NamedRanges
  If NOT oRanges.hasByName(sName) Then
    oSheet = ThisComponent.getSheets().getByIndex(0)
    oRange = oSheet.getCellRangeByName("C3")
    oCellAddress = oRange.getCellAddress()
    oRanges.addNewByName(sName, "A3+B3", oCellAddress, 0)
  End If
End Sub

Hoja de cálculo de Calc contiene el código de LibreOffice Basic anterior.