dポイントプレゼントキャンペーン実施中!

次の2つのマクロをお教えいただけないでしょうか。

(1)ぶら下げインデントの幅を、現状より1字大きくする。
(2)ぶら下げインデントの幅を、現状より1字小さくする。

A 回答 (3件)

追記。



No.2の回答でも、希望している動作ができない場合、私にはこれ以上の
アドバイスはできません。
他の回答を待つか、Wordでのマクロを回答してくれるサイトを利用する
ことをお勧めします。
サイトの例:moug.net Word (VBA)
http://www.moug.net/faq/viewforum.php?f=6

このサイトの場合、VBAを知識として最小限知っていることと、マクロ
の提示をしての質問でないと回答してくれない場合があります。
私が示したマクロを提示してみて、動作として不具合の箇所を編集して
もらうなどしてみてください。
私よりもWordVBAを知っているユーザーが回答してくれるはずです。
私はWordVBAをまだ勉強中なので、簡単なマクロなら回答できますが、
複雑になると手に負えません。

私が上記のサイトへと質問してもよいのですが、自力で解決方法を探す
ほうが勉強になるので、現時点では質問しないと思います。
では、(-_-)/~~~
    • good
    • 0
この回答へのお礼

マクロをいくつか使っていますが、全て教えて!gooで教えてもらったものばかりです。マクロの画面も、新規標準モジュールの開き方と上書き保存の仕方しか知りません。VBAは全く知らないので、お教えのサイトで質問するのは無理だと思います。

こんなにご親切にお教えいただいて、本当にありがとうございます。
今後ともどうぞよろしくお願いいたします。

お礼日時:2014/11/06 11:29

No.1の回答者です。



ぶら下げインデントを文字単位で戻すマクロの動作で、ぶら下げ位置を
インデント位置と揃えることができない不具合については、バージョン
に関係ないと思われます。

[HangingIndentChar増]のマクロのみなら、ぶら下げ位置を文字単位の
CharacterUnitFirstLineIndentでのマイナスの数値を設定することで
対応できます。このCharacterUnitFirstLineIndentは、本来段落内での
最初の行のインデント位置を指定するもので、負の値を指定することで
ぶら下げ位置を指定できるようにしています。
(左インデントの位置との関係?)
http://msdn.microsoft.com/ja-jp/library/office/f …

リンク先のマクロ[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

このマクロの場合、ぶら下げだけでなく、字下げの段落に使うと字下げ
をすべて解除します。

ただし段落やスタイルなどの条件によっては、上記のマクロではうまく
動作しないことがありえます。[標準]スタイルなどの単純なスタイルの
ものだけに使うことをお勧めします。
    • good
    • 0
この回答へのお礼

とても長いマクロを組んでいただいてすみません。

「i+1」と「i-1」の両方をショートカットキーに登録して実行しましたが、インデントには、なぜかどちらも全く何の変化もありませんでした。

理由は不明です。たぶん、私のパソコンに何か不具合が生じているのだと思います。

最初にお教えいただいたマクロに戻しました。インデントゼロの状態は「Ctrl+Q」ですることにします。

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

お礼日時:2014/11/06 11:23

マクロを使わなくても、タブ幅でぶら下げインデントするコマンド名の


" HangingIndent "を使ってもぶら下げインデントを設定できますよ。

このコマンドは、最初からショートカットキーが設定されていますので
簡単に設定できます。( [ Ctrl+T ]キー )
このコマンドをリボンなどに配置すれば、それを使い操作もできます。

このコマンドの場合、既定のタブ幅でぶら下げインデントをするので、
[タブとリーダー]ダイアログで[既定値]を変更する必要があります。
http://www.relief.jp/itnote/archives/017688.php
初期設定のままだと[既定値]は[ 4字 ]なので[ 1字 ]に変更するだけで
コマンドを実行すれば1字単位でぶら下げしてくれます。
逆の動作をするコマンド名の" UnHang "も同様に1字単位でぶら下げを
戻してくれます。( [ Ctrl+Shift+T ]キー )

タブ幅を変更したくない場合、マクロとして登録する必要があります。
過去ログですが参考までに。
http://oshiete.goo.ne.jp/qa/6641661.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です。

補足日時:2014/11/04 15:26
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!