「Web出版サイト」ベータ公開

Q&A集[?]

当サイトでのご質問の受付は終了しました

すべてのコンテンツを読み込み専用としたため、回答欄からも投稿できません

Apache OpenOffice/LibreOfficeのご質問はそれぞれのフォーラムへご投稿ください

質問コーナー

サイト内検索

分類メニュー

関連サイト


本日:1
昨日:0
総数:1545
現在:5


セル範囲に名前を付けた後、範囲だけ変更する方法

ページOpenOffice.org FAQの登録ページ
投稿者Orange
分類
edit/refer
優先順位
edit/refer
状態
edit/refer
カテゴリー
edit/refer
投稿日2010-04-14 06:12:05 (水)
OSXP
依存するページ
バージョン
edit/refer

メッセージ

回答ページでは行末に「~」を付加する必要はありません

以下のマクロのように、いったん削除して登録しなおしてしまうと、
「データの入力規則」の「セルの範囲」が使えなくなります。
("range1"が"#NAME?"になってしまい、設定しなおしになってしまいます。)
そこで、いったん削除するのではなく範囲だけ変更する方法はないのでしょうか?

 oActiveSheet = ThisComponent.getCurrentController().getActivesheet()
 oRange = oActiveSheet.getCellRangeByName("A1:D6")
 oRanges = ThisComponent.DatabaseRanges
 If oRanges.HasByName("range1") = True Then
   ' もしrange1が既に登録済みの場合はまず削除
   oRanges.removeByName("range1")
 End If
 ' range1を登録
 oRanges.addNewByName("range1", oRange.RangeAddress)

以下でOKのようでした

ike@九州 (2010-04-14 10:38:32 (水))

適当に応用してください

Sub Main
 Dim aArea As New com.sun.star.table.CellRangeAddress
 oActiveSheet = ThisComponent.getCurrentController().getActivesheet()
 oSheets = ThisComponent.getSheets()
 
 'シートのインデックスを取得
 nIndex = 0
 For n = 0 to oSheets.count - 1
  If oSheets(n).Name = oActiveSheet.Name then
   nIndex = n
   exit For
  End if
 Next

 oRanges = ThisComponent.DatabaseRanges
 with aArea        'ActiveSheet.$A$1:$D$6
  .Sheet = nIndex  'SheetIndex
  .StartColumn = 0
  .StartRow = 0
  .EndColumn = 3
  .EndRow = 5
 End With

 If oRanges.HasByName("range1") = True Then
  '範囲を変更
  oDataRange = oRanges.getByName("range1")
  oDataRange.DataArea = aArea 
 Else
  'range1を登録
  oRanges.addNewByName("range1", aArea)
  End if

End sub

解決しました

Orange (2010-04-14 13:13:12 (水))

「挿入」→「名前」→「指定」で名前が出てこなかったので、
登録できていないと勘違いしそうになりましたが、
「データの入力規則」の「セルの範囲」で、登録した名前が使用でき、
範囲変更後も変更した範囲でリストが表示されました。

ありがとうございました。

ご注意ください

ike@九州 (2010-04-14 13:33:11 (水))

oRanges = ThisComponent.DatabaseRanges
上記は データ>範囲の指定 からのデータ範囲欄にあたります

挿入>名前>指定 の取得は
oNamedRanges = ThisComponent.NamedRanges

それぞれ別の範囲名なのでご注意ください

お名前:
題名: