Jump to content

Macros/Calc/ba020

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


概要

このページでは、名前付き数式での相対参照を作成するための LibreOffice Basic マクロを提供します。これは、7.0 Calc ガイドの第13章 ("Calc as a Database"(データベースとしてのCalc))から抜粋した例です。

説明

名前付き範囲で絶対アドレス以外のセルアドレスが使用されている場合、これらのアドレスは、addNewByName メソッドの 3番目の引数である Position' で定義される範囲のベースアドレスから相対的に参照されます。この動作は、次のコードで説明されています。マクロ AddNamedFunction が、名前付き数式 AddLeft を作成します。この式は、C3 をベースアドレスとする数式 A3+B3 を参照します。相対参照が使用されているため、AddLeftは、数式 "=AddLeft" を含む任意のセルのすぐ左にある 2つのセルの値を合計します。たとえば、AddLeftがセル E5 で参照されている場合、C5 と D5 の値を合計します(リンクされたスプレッドシートを参照)。

Tip:
このコードは、Calc のもう1つのあまり知られていない属性を示しています。名前付き範囲は、名前付き数式のサブセットであり、式も含めることができます。

Code

Sub AddNamedFunction()
  Dim oSheet          '指定するセル範囲を含むシート
  Dim oCellAddress    '相対参照のアドレス
  Dim oRanges         '名前付き範囲のプロパティ
  Dim oRange          '一つのセル範囲
  Dim sName As String '作成する計算式の名前

  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

このCalc ファイル には上記の LibreOffice Basic コードが含まれています。