OOobbs2/62
質問
moveByNameメソッドを使用して同一ブック内でシートの移動を行う際に、下の二つの構文で違った結果が発生します。 例:同一ブック内に「表1」〜「表8」と連番のシートがあります。 ※シートの並びは「表1」→「表8」の順番 Sub Main() sSheetName = "表1" oDoc = ThisComponent oSheets = oDoc.getSheets() oSheets.moveByName( sSheetName, 3 ) end Sub Sub Main() sSheetName = "表8" oDoc = ThisComponent oSheets = oDoc.getSheets() oSheets.moveByName( sSheetName, 3 ) end Sub 上記の構文を実行した結果は添付の画像に表示してあります。 全く同じ「引数」を使用しているのに、 なぜこの様な動作になるのかご教授願います。 回答
表8 (index 7) を index 3 (左から四番目のシート) に移動すると、index 3 に挿入された後で表8 がなくなり、残りのシートにインデックスが再度付与されます。 表1 (index 0) を同じように移動すると、index 0 の表がなくなってしまうので、それを埋めるためにすべての表に再度インデックスが付け直されます (表1が index 0に)。移動先よりも前の表がなくなるのでインデックスが一つ前にずれてしまいます。
Sub Main() sSheetName = "表1" oDoc = ThisComponent oSheets = oDoc.getSheets() aRangeAddress = oSheets.getByName( sSheetName ).RangeAddress nNewIndex = 3 If aRangeAddress.Sheet < nNewIndex Then nNewIndex = nNewIndex + 1 oSheets.moveByName( sSheetName, nNewIndex ) end Sub
感想,コメント,メモ
|