[[20190821112633]] 『マクロが原因でフォントが勝手に変わる』(ヤドン) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『マクロが原因でフォントが勝手に変わる』(ヤドン)

あるシートから別シートへ転記をするマクロです。
これを実行すると、C13とC20のフォントが明朝体からゴシック体に勝手にかわってしまいます。
かなり前に他の方が作成したマクロで、私自身マクロにあまり詳しくないので、どこがおかしな点なのかがわかりません。
ご指摘いただきたいです。

Sub 転記()

    Sheets("シート3").Select
    Range("A6:K34,A43:K70").Select
    Selection.ClearContents
    Range("A1").Select
    Sheets("シート2").Select
    Range("G7:J35").Select
    Selection.Copy
    Sheets("シート3").Select
    Range("A6").Select
    Selection.PasteSpecial Paste:=xlValues
    Sheets("シート2").Select
    Range("M7:R35").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("シート3").Select
    Range("E6").Select
    Selection.PasteSpecial Paste:=xlValues
    Sheets("シート2").Select
    Range("F36:I63").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("シート3").Select
    Range("A43").Select
    Selection.PasteSpecial Paste:=xlValues
    Sheets("シート2").Select
    Range("L36:Q63").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("シート3").Select
    Range("E43").Select
    Selection.PasteSpecial Paste:=xlValues

    Sheets("シート2").Select
    Range("C7:C35").Select
    Selection.Copy
    Sheets("シート3").Select
    Range("K6").Select
    Selection.PasteSpecial Paste:=xlValues
    Sheets("シート2").Select
    Range("C36:C63").Select
    Selection.Copy
    Sheets("シート3").Select
    Range("K43").Select
    Selection.PasteSpecial Paste:=xlValues
    Range("A1").Select

    Sheets("入力シート").Select
    Range("A1").Select
End Sub

よろしくお願いいたします。

< 使用 Excel:Excel2016、使用 OS:Windows10 >


 値貼り付けだと、貼り付け先の書式がそのまま適用されます。
 Paste:=xlValuesを全て削除するとコピー元の書式通りになりつけされます。

 マクロの記録で生成されたコードなので、この際修正?

 規則性を見るのは面倒なので、そのまま

 Sub 転記()
     Sheets("シート3").Range("A6:K34,A43:K70").ClearContents
     Sheets("シート2").Range("G7:J35").Copy Sheets("シート3").Range("A6")
     Sheets("シート2").Range("M7:R35").Copy Sheets("シート3").Range("E6")
     Sheets("シート2").Range("F36:I63").Copy Sheets("シート3").Range("A43")
     Sheets("シート2").Range("L36:Q63").Copy Sheets("シート3").Range("E43")
     Sheets("シート2").Range("C7:C35").Copy Sheets("シート3").Range("K6")
     Sheets("シート2").Range("C36:C63").Copy Sheets("シート3").Range("K43")
     Application.Goto Sheets("入力シート").Range("a1"), True
 End Sub
(seiya) 2019/08/21(水) 11:51

どっちのシートのフォントが変わるか判りませんが、マクロは問題無いように思います。 値貼り付けしかしていませんから。

しかし、おっしゃる現象は見たことがあります。 原因は、セルの着色をスタイルで行っている場合、またはセルのスタイルが壊れている場合です。 症状としては、手修正しても、ブックを保存してから開きなおすと元に戻る感じ。 セル直接の変更が無視されて、セルのスタイルで上書きされてしまうのです。 勝手に罫線が変わったり、色が変わったりする事もあります。(ぱっと見でも、表が壊れる、という感じ)

対策は、故意に行っているのであればセルのスタイルを「変更」すれば良いだけですが、壊れている場合(「セルのスタイル」を表示すると、変な文字列の定義がずらーっと並んだりする)、新しいブックに移行するしかないでしょう。 この際、シートのコピーやセル範囲のコピーを行うと、セルのスタイルも壊れたまま一緒にコピーされてしまい、同じ現象になるので、値だけコピーして、罫線や着色は全部やり直しましょう。
(???) 2019/08/21(水) 11:55


返信してくださった方々、ありがとうございます!

詳しいことは省いて書いたのですが、シート2からシート3への転記です。
シート3のC13とC20のフォントが勝手に変わります。それも、2文字目からフォントが変わります…

見たらこのブックが作成されたのは1996年だそうで、かなり古いです。(関係ないと思いますが。)
(ヤドン) 2019/08/21(水) 14:56


 >C13とC20のフォントが明朝体からゴシック体に勝手にかわってしまいます。

 コピー元と違うということなのでしょうか?

 >2文字目からフォントが変わります…

 こういうのは、セルごと貼り付けないと書式などはコピーされません。
 というか、文字のみの張りつけだと、文字の装飾類はリセットされると思います。
(BJ) 2019/08/21(水) 15:52

2文字目から…、というのはおかしいですね。 ご提示のマクロにはそんなコードは無いし、壊れているときもセル単位での書式変更なので、文字列は全部同じフォントになります。 そして、値貼り付けすると、文字単位の書式は消えますし。

別のマクロが無いか、確認してみてください。 例えば、マクロの記録では標準モジュールにコードが書かれますが、シート毎のモジュールにコードを書くこともできます。 セルが変化した場合にマクロを自動動作させるのも、シートモジュールの方になります。 マクロの編集画面で、左側にあるシート名を、全てダブルクリックして、コードの有無を確認してみてください。
(???) 2019/08/21(水) 17:01


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.