セル範囲に名前を付けた後、範囲だけ変更する方法 †
ページ | OpenOffice.org FAQの登録ページ |
---|---|
投稿者 | Orange |
分類 | |
優先順位 | |
状態 | |
カテゴリー | |
投稿日 | 2010-04-14 06:12:05 (水) |
OS | XP |
依存するページ | |
バージョン |
メッセージ †
回答ページでは行末に「~」を付加する必要はありません |
以下のマクロのように、いったん削除して登録しなおしてしまうと、
「データの入力規則」の「セルの範囲」が使えなくなります。
("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
それぞれ別の範囲名なのでご注意ください