• ベストアンサー

マクロで

マクロの記憶で、 表全体のセルの結合を解除、解除したところに罫線 を引き、フォントの色も自動に戻す簡単なマクロ を記録したいのですが、なぜか表の一部分のみ、 元の塗りつぶしの色が残ってて、あとは塗りつぶしの色が自動になってしまってます。 何度やっても同じです。 塗りつぶしはそのままにしたいのですが。 方法が悪いのでしょうか? 教えて下さい。

質問者が選んだベストアンサー

  • ベストアンサー
  • moon00
  • ベストアンサー率44% (315/712)
回答No.4

コードの掲載ありがとうございます。 まず、 With Selection .HorizontalAlignment = xlGeneral .VerticalAlignment = xlCenter .WrapText = False .Orientation = 0 .AddIndent = False .IndentLevel = 0 .ShrinkToFit = False .ReadingOrder = xlContext .MergeCells = True End With が数回出てきますが、1回でOKですので、重複分は消してください。 .MergeCells = True 上記のコードは、セル結合を行うコードなので、これを実行すると、 選択範囲が一度全部結合されてしまいます。 選択範囲中のアクティブセルの書式のまま、全部が結合されてしまうことになります。 この辺りが、塗りつぶしがおかしくなる原因だと思われます。 それと、もう一度何をしたいか教えてください。 記載されたコードには、フォントの色を自動に戻す記述はありません。 参考URLをご覧になって、どのコードがどの書式を表しているか、 一度確認してください。 その上で、今回のマクロで操作不要なコードははずしてみましょう。

参考URL:
http://www.officetanaka.net/excel/vba/cell/cell06.htm
m--m5357
質問者

お礼

本当に助かりました!!解決しました!!! セル結合を行うコードなので、これを実行すると、 選択範囲が一度全部結合されてしまいます を参考に、セルをバラバラに選択してみたら 出来ました!!! 本当に親切にしていただき、ありがとうございます。 参考URLも図も掲載されていて 大変わかりやすいです。 これから勉強していきたいと思います。 本当にありがとうございました。

その他の回答 (3)

  • moon00
  • ベストアンサー率44% (315/712)
回答No.3

一番いいのは、そのマクロコードをここに掲載することなんですが。 マクロの記録でセルのプロパティを触ると、 そのとき、操作していないプロパティの状態についても 記述されます。 例えば、上下左右の罫線が実線となっているセルで下罫線だけ点線にする、という記録をし、 そのマクロを他のセルに適用すると、下罫線だけが変更されるのではなく、 上及び左右の罫線が実線となる操作となります。 とりあえず、コードを記載してもらえませんか。

m--m5357
質問者

お礼

長いので全部記載できませんがお願いします。 Range("A4:F17").Select Selection.ClearContents With Selection .HorizontalAlignment = xlGeneral .VerticalAlignment = xlCenter .WrapText = False .Orientation = 0 .AddIndent = False .IndentLevel = 0 .ShrinkToFit = False .ReadingOrder = xlContext .MergeCells = True End With With Selection .HorizontalAlignment = xlGeneral .VerticalAlignment = xlCenter .WrapText = False .Orientation = 0 .AddIndent = False .IndentLevel = 0 .ShrinkToFit = False .ReadingOrder = xlContext .MergeCells = True End With With Selection .HorizontalAlignment = xlGeneral .VerticalAlignment = xlCenter .WrapText = False .Orientation = 0 .AddIndent = False .IndentLevel = 0 .ShrinkToFit = False .ReadingOrder = xlContext .MergeCells = True End With

m--m5357
質問者

補足

続きです。With Selection .HorizontalAlignment = xlGeneral .VerticalAlignment = xlCenter .WrapText = False .Orientation = 0 .AddIndent = False .IndentLevel = 0 .ShrinkToFit = False .ReadingOrder = xlContext .MergeCells = True End With With Selection .HorizontalAlignment = xlGeneral .VerticalAlignment = xlCenter .WrapText = False .Orientation = 0 .AddIndent = False .IndentLevel = 0 .ShrinkToFit = False .ReadingOrder = xlContext .MergeCells = True End With With Selection .HorizontalAlignment = xlGeneral .VerticalAlignment = xlCenter .WrapText = False .Orientation = 0 .AddIndent = False .IndentLevel = 0 .ShrinkToFit = False .ReadingOrder = xlContext .MergeCells = True End With With Selection .HorizontalAlignment = xlGeneral .VerticalAlignment = xlCenter .WrapText = False .Orientation = 0 .AddIndent = False .IndentLevel = 0 .ShrinkToFit = False .ReadingOrder = xlContext .MergeCells = True End With With Selection .HorizontalAlignment = xlGeneral .VerticalAlignment = xlCenter .WrapText = False .Orientation = 0 .AddIndent = False .IndentLevel = 0 .ShrinkToFit = False .ReadingOrder = xlContext .MergeCells = True End With With Selection .HorizontalAlignment = xlGeneral .VerticalAlignment = xlCenter .WrapText = False .Orientation = 0 .AddIndent = False .IndentLevel = 0 .ShrinkToFit = False .ReadingOrder = xlContext .MergeCells = True End With Selection.UnMerge Selection.Borders(xlDiagonalDown).LineStyle = xlNone Selection.Borders(xlDiagonalUp).LineStyle = xlNone With Selection.Borders(xlEdgeLeft) .LineStyle = xlContinuous .Weight = xlThin .ColorIndex = xlAutomatic End With With Selection.Borders(xlEdgeTop) .LineStyle = xlContinuous .Weight = xlThin .ColorIndex = xlAutomatic End With With Selection.Borders(xlEdgeBottom) .LineStyle = xlContinuous .Weight = xlThin .ColorIndex = xlAutomatic End With With Selection.Borders(xlEdgeRight) .LineStyle = xlContinuous .Weight = xlThin .ColorIndex = xlAutomatic End With With Selection.Borders(xlInsideVertical) .LineStyle = xlContinuous .Weight = xlThin .ColorIndex = xlAutomatic End With With Selection.Borders(xlInsideHorizontal) .LineStyle = xlContinuous .Weight = xlThin .ColorIndex = xlAutomatic End With End Sub

  • moon00
  • ベストアンサー率44% (315/712)
回答No.2

「マクロの記憶」で作って、そのままのマクロを使用されていますか? それなら、 With Selection.Interior .ColorIndex = 8    .Pattern = xlSolid .PatternColorIndex = xlAutomatic End With 上記のような記述はありませんか? これがセルの塗りつぶしをコントロールしているので、 マクロの動作内で選択部分の塗りつぶし属性については 操作したくないのであれば、この部分をマクロから消してください。 ↑マクロの内容を見るには、ツール→マクロ→マクロで出てくるダイアログから、 該当のマクロを選び、編集をクリックしてください。 マクロの記憶でしかマクロを使ったことがない、という場合、 下記のHP等を見て、マクロの編集方法等を少し覚えてからのほうがやりやすいかもしれません。

参考URL:
http://www.sigoto.co.jp/excel/
m--m5357
質問者

お礼

回答ありがとうございます。 頂いたHP参考にします!! 記憶でしか作った事がありません・・。 言われたような記述があったので、消してみると 今度は全て塗りつぶしになってしまいました。 これから勉強していこうと思っていますが、 記録し終わった時の状態と同じに ならないのはなぜでしょうか? それも勉強するとわかるんでしょうか? よければ教えてください。

  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.1

>元の塗りつぶしの色が残ってて、あとは塗りつぶしの色が自動になってしまってます。 そのセルを選択して「書式」「条件付き書式」で何か設定されてませんか? 設定されている場合は、「削除」を押して条件を消してください。 それで塗りつぶしの色が自動になると思います。

m--m5357
質問者

お礼

回答ありがとうございます。 条件付き書式は設定していません。 今も原因不明です。。。

関連するQ&A