- ベストアンサー
ぶら下げインデントの幅を現状より大きくするマクロ
次の2つのマクロをお教えいただけないでしょうか。 (1)ぶら下げインデントの幅を、現状より1字大きくする。 (2)ぶら下げインデントの幅を、現状より1字小さくする。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
追記。 No.2の回答でも、希望している動作ができない場合、私にはこれ以上の アドバイスはできません。 他の回答を待つか、Wordでのマクロを回答してくれるサイトを利用する ことをお勧めします。 サイトの例:moug.net Word (VBA) http://www.moug.net/faq/viewforum.php?f=6 このサイトの場合、VBAを知識として最小限知っていることと、マクロ の提示をしての質問でないと回答してくれない場合があります。 私が示したマクロを提示してみて、動作として不具合の箇所を編集して もらうなどしてみてください。 私よりもWordVBAを知っているユーザーが回答してくれるはずです。 私はWordVBAをまだ勉強中なので、簡単なマクロなら回答できますが、 複雑になると手に負えません。 私が上記のサイトへと質問してもよいのですが、自力で解決方法を探す ほうが勉強になるので、現時点では質問しないと思います。 では、(-_-)/~~~
その他の回答 (2)
- enunokokoro
- ベストアンサー率74% (3543/4732)
No.1の回答者です。 ぶら下げインデントを文字単位で戻すマクロの動作で、ぶら下げ位置を インデント位置と揃えることができない不具合については、バージョン に関係ないと思われます。 [HangingIndentChar増]のマクロのみなら、ぶら下げ位置を文字単位の CharacterUnitFirstLineIndentでのマイナスの数値を設定することで 対応できます。このCharacterUnitFirstLineIndentは、本来段落内での 最初の行のインデント位置を指定するもので、負の値を指定することで ぶら下げ位置を指定できるようにしています。 (左インデントの位置との関係?) http://msdn.microsoft.com/ja-jp/library/office/ff840585(v=office.15).aspx リンク先のマクロ[HangingIndentChar]は、ぶら下げをするだけなので CharacterUnitFirstLineIndentだけを指定するだけで済みました。 しかし、[HangingIndentChar減]マクロで「i + 1」としての値だけでは、 「i = 0」 となったときに[字下げ]も[ぶら下げ]もない状態にすることが 単独では設定できないようなのです。 少し工夫をした以下のマクロでは、左インデント位置を最後に指定することで、 一応希望している動作をすると思います。 Sub HangingIndentChar減() ' ' 現在のぶら下げ幅を取得して一文字下げます Dim i As Integer i = Selection.ParagraphFormat.CharacterUnitFirstLineIndent ' MsgBox i If i >= -1 Then With Selection.ParagraphFormat .CharacterUnitFirstLineIndent = 0 .FirstLineIndent = MillimetersToPoints(0) .LeftIndent = MillimetersToPoints(0) End With Else Selection.ParagraphFormat.CharacterUnitFirstLineIndent = i + 1 End If End Sub このマクロの場合、ぶら下げだけでなく、字下げの段落に使うと字下げ をすべて解除します。 ただし段落やスタイルなどの条件によっては、上記のマクロではうまく 動作しないことがありえます。[標準]スタイルなどの単純なスタイルの ものだけに使うことをお勧めします。
お礼
とても長いマクロを組んでいただいてすみません。 「i+1」と「i-1」の両方をショートカットキーに登録して実行しましたが、インデントには、なぜかどちらも全く何の変化もありませんでした。 理由は不明です。たぶん、私のパソコンに何か不具合が生じているのだと思います。 最初にお教えいただいたマクロに戻しました。インデントゼロの状態は「Ctrl+Q」ですることにします。 ありがとうございました。
- enunokokoro
- ベストアンサー率74% (3543/4732)
マクロを使わなくても、タブ幅でぶら下げインデントするコマンド名の " HangingIndent "を使ってもぶら下げインデントを設定できますよ。 このコマンドは、最初からショートカットキーが設定されていますので 簡単に設定できます。( [ Ctrl+T ]キー ) このコマンドをリボンなどに配置すれば、それを使い操作もできます。 このコマンドの場合、既定のタブ幅でぶら下げインデントをするので、 [タブとリーダー]ダイアログで[既定値]を変更する必要があります。 http://www.relief.jp/itnote/archives/017688.php 初期設定のままだと[既定値]は[ 4字 ]なので[ 1字 ]に変更するだけで コマンドを実行すれば1字単位でぶら下げしてくれます。 逆の動作をするコマンド名の" UnHang "も同様に1字単位でぶら下げを 戻してくれます。( [ Ctrl+Shift+T ]キー ) タブ幅を変更したくない場合、マクロとして登録する必要があります。 過去ログですが参考までに。 http://okwave.jp/qa/q6641661.html ぶら下げを戻す場合は、「i - 1」を「i + 1」にしたマクロを用意して あげれば済みます。
補足
いつもお教えいただきありがとうございます。 次の2つのマクロを組み、マクロ名を [ ] 内のようにして、()内のショートカットキーに登録して、うまくできるようになりました。 (1)お教えのhttp://oshiete.goo.ne.jp/qa/6641661.htmlのマクロで「i - 1」。[HangingIndentChar増](Ctrl+]) (2)お教えのhttp://oshiete.goo.ne.jp/qa/6641661.htmlのマクロで「i + 1」。[HangingIndentChar減](Ctrl+:) ただ、次の(ア)、(イ)の2つだけがうまく行きません。 (ア) ぶら下げインデントが1字の状態からぶら下げインデントが0字の状態にするところがうまくいきません。 例えば、上記の(1)を3回続けてして、その後(2)を2回すると、次の(a)になります。 その状態でもう1回(2)をすると、(b)になると思うのですが、実際には(a)のままで何も変わりません。 その状態でもう1回(2)をすると、(c)になります。 (a)ぶら下げインデントが1字の状態。 (b)インデントが全くない状態。 (c)左インデント1字でかつ字下げインデント1字の状態。 (d)字下げインデントが1字の状態。 (a)の状態でもう1回(2)をすると(b)になるようにするには、どうすればいいでしょうか。 (イ) 同様に、(d)から(b)にするところがうまくいきません。 (d)の状態でもう1回(1)をすると(b)になるようにするには、どうすればいいでしょうか。 もしかしたら、こちらのWord 2013に何か不具合があって、それでうまく行かないのかもしれません…。 Windows 7 Ultimate 64 SP1、Word 2013 32ビット、Intel i7 980X、メモリ24GBです。
お礼
マクロをいくつか使っていますが、全て教えて!gooで教えてもらったものばかりです。マクロの画面も、新規標準モジュールの開き方と上書き保存の仕方しか知りません。VBAは全く知らないので、お教えのサイトで質問するのは無理だと思います。 こんなにご親切にお教えいただいて、本当にありがとうございます。 今後ともどうぞよろしくお願いいたします。