** [[OOobbs3/53]] [#b10f6af9] -''サマリ'': 実行するたびに「ぶら下がりインデント」を深くしたい(マクロで) -''環境'': Writer -''状態'': 解決 -''投稿者'': [[かつ]] -''投稿日'': 2011-04-28 (木) 23:39:31 *** 質問 [#x9a4af1c] マクロを1度実行するごとに、カーソルのある行の「左インデント」の値と、「一行目のインデント」の値を読み取って、ぶら下がりインデントを12ポイントずつ深くしたいと考え、次のようなマクロを作ってみました。 試してみると、第1段落では思い通りの動作をするのですが、第2段落以降では、繰り返しマクロを実行してインデントをより深くすることができなかったり、第1段落のインデントの深さに連動するような動作になってしまいます。 どこがどうおかしいのか、どう変更すればいいのか、お教えください。 Sub HangIndent dim document as object dim dispatcher as object document = ThisComponent.CurrentController.Frame dispatcher = createUnoService("com.sun.star.frame.DispatchHelper") oTextCursor = ThisComponent.Text.createTextCursor() dim args1(1) as new com.sun.star.beans.PropertyValue args1(0).Name = "LeftRightMargin.TextLeftMargin" args1(0).Value = oTextCursor.ParaLeftMargin + 423 args1(1).Name = "LeftRightMargin.FirstLineIndent" args1(1).Value = oTextCursor.ParaFirstLineIndent - 423 dispatcher.executeDispatch(document, ".uno:LeftRightMargin", "", 0, args1()) End Sub *** 回答 [#uf28aaf2] - 動作を確認していませんが、ThisComponent.Text.createTextCursor() では現在のカーソルではなく、ドキュメント中を移動できる見えないカーソルを利用していることになります。表示されているカーソル(ビューカーソル)を利用したければ、[[OOoBasic/Writer/ViewCursor]] を参照してください。 -- はにゃ? &new{2011-04-29 (金) 00:13:39}; - ViewCursor を使うと、思いどおりの動作になりました。ありがとうございました。ちなみに、TextCursor は、単にマクロ起動中に画面上にカーソルの動きが見えないだけ(したがって、マクロにり向いている)と、勘違いしていました。 -- かつ &new{2011-04-29 (金) 10:53:37}; #comment *** 感想,コメント,メモ [#m584f449] - 操作ミスで、マクロが分断されてしまいました。 -- かつ &new{2011-04-28 (木) 23:42:13}; - 書式のミスで、マクロが分断されてしまいました。 -- かつ &new{2011-04-28 (木) 23:42:34}; - 解決です。(ステータスが未解決のままなので念のため) -- かつ &new{2011-05-21 (土) 21:44:58}; - 勝手に解決にしてもらってかまいません。 -- はにゃ? &new{2011-05-21 (土) 21:48:12}; #comment |