
Word 2013で、カーソルを置いている段落を次の(1)~(5)のように設定できる1つのマクロをお教えいただけないでしょうか。
「1つのマクロ」というのは、マクロを2つ以上に分けないで1つのマクロに(1)~(5)の全部を入れたいということです。
(1)インデント左を-0.2字にする。
(2)インデント右を-0.2字にする。
(3)間隔段落前を0行にする。
(4)間隔段落後を0.12行にする。
(5)行間隔を1行にする。
先日こちらでお教えいただいたことを元にして、自分で次の[A1]、[A2]のように組んでみたのですがどちらもうまくいきませんでした。
[A1]
Sub 下端セル020200121 ()
'インデント-0.2,-0.2、行間隔+0.00, +0.12、行間1行
With Selection.ParagraphFormat
.CharacterUnitLeftIndent = -0.2 ' (1)
.CharacterUnitRightIndent = -0.2 ' (2)
.LineUnitBefore = 0 ' (3)
.LineUnitAfter = 0.12 ' (4)
.LineSpacingRule = wdLineSpaceSingle '(5)
End With
End Sub
[A2]
Sub 下端セル020200121 ()
'インデント-0.2,-0.2、行間隔+0.00, +0.12、行間1行
With Selection.ParagraphFormat
.CharacterUnitLeftIndent = -0.2 ' (1)
.CharacterUnitRightIndent = -0.2 ' (2)
.CloseParaAbove ' (3)
.LineUnitAfter = 0.12 ' (4)
.LineSpacingRule = wdLineSpaceSingle '(5)
End With
End Sub
No.4ベストアンサー
- 回答日時:
マクロについて分かっていないのなら、無理してマクロを駆使し
書式を指定するのなら、基本使わないほうが良いと思いますよ。
質問や補足などからマクロ名にセルがついていたので、何となく
表関係のセル内を何とかしたいのだろうなとは思っていました。
左右へのインデントの数値が中途半端なのも気になっていたし、
基本的な部分は同じ処理をしていますしね。
まずはマクロでの処理をしないで、表そのものの設定をしてから
セル内の配置を考えてみてはいかが。
表の設定手順;
1.
設定をしたい表内にカーソルがある状態で、リボンの[表ツール]
の[レイアウト]タブから[プロパティ]または右クリックメニュー
にある[表のプロパティ]を選択。
[表]タブの[オプション]ボタン→[表のオプション]ダイアログで
[既定のセルの余白]にある左右の余白を[ 0 mm ]にします。
これで、左右のインデントのマイナスを指定しなくても、罫線と
文字列の間隔をなくすことができます。
(近すぎるなら、余白を1mm以下で調整してください。)
2.
次に[段落前]や[段落後]の設定ですが、何かの基準線に合わせる
ように設定したい段落に適用しているのでしょうか?
(例えば[グリッド線]など)
この場合は、[表のプロパティ]の[セル]タブにある[オプション]
ボタンを押し、[表全体を同じ設定にする]のチェックをはずし、
上下の余白を指定します。
これで、段落書式の設定をいじらないでも罫線との間隔を一定に
することもできますし、グリッド線に合わせることもある程度は
可能になります。
セル内配置などを見直して、表そのものの設定で対応するのか、
段落書式で対応するのかを検討してみて下さい。
ちなみに、グリッド線に合わせる設定は、段落を[固定値]にして
対応するのを個人的にはお勧めします。
マクロの修正については、上記の[表のプロパティ]での設定でも
対応ができない場合に別途質問されることをお勧めします。

確かに!!
表のプロパティで設定する方が遥かに簡単ですね!!
表のプロパティにオプションがあることを知りませんでした。
ありがとうございました。
No.3
- 回答日時:
何をなされたいのか分かりませんが。
[全]~[中央]までを順に適用できるようにすればよいのですね。
同じ段落での処理として、とりあえずのマクロです。
[全]
Sub 全セル020212121()
' インデント-0.2,-0.2、行間隔+0.12, +0.12、行間1行
With Selection.ParagraphFormat
.CharacterUnitLeftIndent = -0.2 ' (1)
.CharacterUnitRightIndent = -0.2 ' (2)
.LineUnitBefore = 0.12 ' (3)
.LineUnitAfter = 0.12 ' (4)
.LineSpacingRule = wdLineSpaceSingle '(5)
End With
End Sub
[項目]
Sub 項目セル040512121 ()
' インデント-0.4,-0.5、同じ部分は省略
With Selection.ParagraphFormat
.CharacterUnitLeftIndent = -0.4 ' (1)
.CharacterUnitRightIndent = -0.5 ' (2)
End With
End Sub
[上端]([B])
Sub 上端セル020212001 ()
' インデント-0.2,-0.2、行間隔+0.12、+0.00, 同じ部分は省略
With Selection.ParagraphFormat
.CharacterUnitLeftIndent = -0.2 ' (1)
.CharacterUnitRightIndent = -0.2 ' (2)
' .LineUnitBefore = 0.12 ' (3)
.LineUnitAfter = 0 ' (4)の行単位の処理
.SpaceAfter = 0 ' (4)のpt単位の処理
End With
End Sub
[下端]([A1])
Sub 下端セル020200121 ()
' 行間隔+0.00, +0.12、同じ部分は省略
With Selection.ParagraphFormat
.LineUnitBefore = 0 ' (3)の行単位の処理
.SpaceBefore = 0 ' (3)のpt単位の処理
.LineUnitAfter = 0.12 ' (4)の行単位の処理
End With
End Sub
[中央]
Sub 中央セル020200121 ()
' 行間隔+0.00, +0.00、同じ部分は省略
With Selection.ParagraphFormat
' .LineUnitBefore = 0 ' (3)の行単位の処理
' .SpaceBefore = 0 ' (3)のpt単位の処理
.LineUnitAfter = 0 ' (4)の行単位の処理
.SpaceAfter = 0 ' (4)のpt単位の処理
End With
End Sub
上記のマクロで,一部省略しないでコメントブロックのみにして
いるのは、マクロの適用順によっては必要な場合があるので。
段落マクロの参考サイト
http://www.ne.jp/asahi/yamaguchi/marifuhatsu/qap …
https://we-vba.info/word_vba/block6/
https://we-vba.info/word_vba/block0/
その他
https://www.relief.jp/Word-VBA/Paragraph
>何をなされたいのか分かりませんが、
表の段落を設定しているのですが、こんな風にしたらいいのではないか、あんな風にしたらいいのではないかと悩みながら何度も試行錯誤しているため、そのたびにこれらのマクロをしかも各マクロの数値を微妙に変えながら適用することになり、結果として表内の同一行に、必ずしも常に全部という訳ではありませんがこれら5つのマクロのうちのたくさんのものを繰り返して適用することになります。
そのため、[全]~[中央]までを順に適用するとは限らず、全く順序不同で(悪くいえば、手当たり次第に)繰り返して同一行に適用することになります。例えば、次の(ア)、(イ)のように適用することになります。(ア)は、同一行に、まず[項目]を適用して、次に [下端]を適用して、次に [全]を適用するという意味です。「項目 項目 項目 項目」と同じものが続いているのは、[項目]のマクロの数値を少しずつ変えて変えたたびに適用したということです。
(ア) 項目 下端 全
(イ) 中央 下端 上端 項目 項目 項目 項目 全 全 上端 中央 中央 中央
すみませんが、これら5つのマクロの全部を、全く順序不同で(悪くいえば、手当たり次第に)繰り返して同一行に適用できるように修正していただけないでしょうか。
マクロは全く分からないのでお教えいただいたのを、ただ数値などを変更する以外は全くそのまま使わせていただくことしかできません。よろしくお願いします。
No.2
- 回答日時:
[A2]は無意味なので、無視しますね。
とりあえず、[A1]の場合の処理について回答します。
質問のマクロだと、(3)が曲者なのです。
(3)間隔段落前を0行にする。
は、段落前が最初から0行だけなら問題ないのですが、段落前に
行またはポイントでの指定がある場合の処理が必要になります。
マクロに修正として追加したもの。
Sub 下端セル020200121()
'インデント-0.2,-0.2、行間隔+0.00, +0.12、行間1行
With Selection.ParagraphFormat
.CharacterUnitLeftIndent = -0.2 ' (1)
.CharacterUnitRightIndent = -0.2 ' (2)
.LineUnitBefore = 0 ' (3)の行単位の処理
.SpaceBefore = 0 ' (3)のpt単位の処理
.LineUnitAfter = 0.12 ' (4)
.LineSpacingRule = wdLineSpaceSingle '(5)
End With
End Sub
お教えのマクロで[A1]は正常に作動するようになりました。
ありがとうございました。
前回お教えいただいたマクロを少し変更して[A1]も含めて次のようなマクロを組んでいます。
事情があってこれらのマクロを同一の行に次々と適用していくのですが、これら全てのマクロを同一行に適用しても正常に作動するように、次のマクロを修正していただけないでしょうか。
[全]
Sub 全セル020212121()
'インデント-0.2,-0.2、行間隔+0.12, +0.12、行間1行
With Selection.ParagraphFormat
.CharacterUnitLeftIndent = -0.2 ' (1)
.CharacterUnitRightIndent = -0.2 ' (2)
.LineUnitBefore = 0.12 ' (3)
.LineUnitAfter = 0.12 ' (4)
.LineSpacingRule = wdLineSpaceSingle '(5)
End With
End Sub
[項目]
Sub 項目セル040512121 ()
'インデント-0.4,-0.5、行間隔+0.12, +0.12、行間1行
With Selection.ParagraphFormat
.CharacterUnitLeftIndent = -0.4 ' (1)
.CharacterUnitRightIndent = -0.5 ' (2)
.LineUnitBefore = 0.12 ' (3)
.LineUnitAfter = 0.12 ' (4)
.LineSpacingRule = wdLineSpaceSingle '(5)
End With
End Sub
(字数制限のため「補足」へ続きます。)
No.1
- 回答日時:
A1の方で問題なくうまくいきましたよ?

チェックしたところ症状が少し分かってきました。
もう1つ、次の[B]のマクロを作ってあります。
[B]
Sub 上端セル020212001 ()
'インデント-0.2,-0.2、行間隔+0.12, +0.00、行間1行
With Selection.ParagraphFormat
.CharacterUnitLeftIndent = -0.2 ' (1)
.CharacterUnitRightIndent = -0.2 ' (2)
.LineUnitBefore = 0.12 ' (3)
.LineUnitAfter = 0 ' (4)
.LineSpacingRule = wdLineSpaceSingle '(5)
End With
End Sub
次の(a)~(d)のようになりました。「新規行」とは過去にマクロを適用したことのない行です。
(a)新規文書を開いて新規行に[A1]を適用すると段落前0行、段落後0.12行になる。
(b)新規文書を開いて新規行に[B]を適用すると段落前0.12行、段落後0行になる。
(c)新規文書を開いて新規行に[A1]を適用した後に[B]を適用すると、段落前0.12行、段落後0行になるはずなのに、段落前0.12行、段落後2.15ptになる。
(d)新規文書を開いて新規行に[B]を適用した後に[A1]を適用すると、段落前0行、段落後0.12行になるはずなのに、段落前2.15pt、段落後0.12行になる。
(a)、(b)は正常なのですが、(c)、(d)が異常です。
もしできれば、(c)、(d)をお試しいただけないでしょうか。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) まとめシートから集計シートへA列のコードが一致したら1行コピーするマクロをネット上で見つけました。こ 1 2022/08/30 14:11
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2022/10/13 08:41
- Visual Basic(VBA) Wordマクロで指定したフォルダ名に保存する方法について 8 2022/12/13 11:35
- Visual Basic(VBA) excel2021で実行できないマクロ。どこを直したらいいのか 2 2022/03/28 03:40
- Excel(エクセル) Excelのマクロコードについて教えてください。 1 2022/03/27 10:47
- Visual Basic(VBA) ExcelVBAのマクロについて。 9 2022/05/04 14:50
- Visual Basic(VBA) マクロで最終行を取得してコピーしたい 3 2022/04/06 19:07
- Excel(エクセル) 【マクロ】スクショ印刷がうまく動かない件 5 2022/12/06 17:37
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 1 2023/08/10 14:24
- Visual Basic(VBA) Sheet「状況」から、分類の年齢別カウント数をSheet「D表」へ転記する下記マクロを作っています 7 2022/12/14 17:57
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
EXCELで高さ0で隠れた行の素早...
-
間隔は「開く」?「空く」?
-
ワードで勝手に均等割付される
-
Wordのコメントのフォーマット...
-
Wordの数式入力で行間が広くな...
-
一部だけ行間隔を狭めたいんです。
-
WORDで文字間隔が伸びる
-
Wordの表(A4縦)で50行以上くら...
-
Wordの行間隔の設定について 課...
-
wordで改行しても次のページに...
-
オブジェクトどうしの間隔を設...
-
CS検定(コンピュータサービ...
-
word 行の頭や末に禁則文字(...
-
市販の便箋に印刷をしたい
-
ACCESSのレポートの罫線・・・?
-
word 文字数のずれ
-
ワードの文字スペースの間隔が...
-
Photoshopコンタクトシート作成...
-
ワードで表を作成しました。ほ...
-
Wordの均等割り付け 漢字とひ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
EXCELで高さ0で隠れた行の素早...
-
間隔は「開く」?「空く」?
-
一部だけ行間隔を狭めたいんです。
-
ワードで勝手に均等割付される
-
Wordのコメントのフォーマット...
-
wordで改行しても次のページに...
-
Wordの表(A4縦)で50行以上くら...
-
市販の便箋に印刷をしたい
-
Wordの数式入力で行間が広くな...
-
EXCEL の折り返し書式設定して...
-
オブジェクトどうしの間隔を設...
-
Access レポートの文字間を設...
-
autocad 表の行の高さ調整
-
WORDで文字間隔が伸びる
-
初歩的な質問。 WORDで2...
-
Wordの行間隔の設定について 課...
-
ワードで罫線枠を固定したい
-
Excelの行高が突然、異常に大き...
-
Pagesでの文字数と行数の設定
-
Wordの均等割り付け 漢字とひ...
おすすめ情報
補足1(「お礼」からのつづきです。)
[上端]([B])
Sub 上端セル020212001 ()
'インデント-0.2,-0.2、行間隔+0.00, +0.12、行間1行
With Selection.ParagraphFormat
.CharacterUnitLeftIndent = -0.2 ' (1)
.CharacterUnitRightIndent = -0.2 ' (2)
.LineUnitBefore = 0.12 ' (3)
.LineUnitAfter = 0 ' (4)
.LineSpacingRule = wdLineSpaceSingle '(5)
End With
End Sub
(字数制限のため「補足2」へ続きます。)
補足2(「補足1」からのつづきです。)
[下端]([A1])
Sub 下端セル020200121 ()
'インデント-0.2,-0.2、行間隔+0.00, +0.12、行間1行
With Selection.ParagraphFormat
.CharacterUnitLeftIndent = -0.2 ' (1)
.CharacterUnitRightIndent = -0.2 ' (2)
.LineUnitBefore = 0 ' (3)の行単位の処理
.SpaceBefore = 0 ' (3)のpt単位の処理
.LineUnitAfter = 0.12 ' (4)
.LineSpacingRule = wdLineSpaceSingle '(5)
End With
End Sub
(「補足3」へ続きます。)
補足3(「補足2」からのつづきです。)
[中央]
Sub 中央セル020200121 ()
'インデント-0.2,-0.2、行間隔+0.00, +0.00、行間1行
With Selection.ParagraphFormat
.CharacterUnitLeftIndent = -0.2 ' (1)
.CharacterUnitRightIndent = -0.2 ' (2)
.LineUnitBefore = 0 ' (3)
.LineUnitAfter = 0 ' (4)
.LineSpacingRule = wdLineSpaceSingle ' (5)
End With
End Sub