プロが教える店舗&オフィスのセキュリティ対策術

https://oshiete.goo.ne.jp/qa/10869320.html
で質問させて頂いたものです。
値が変わったものを条件付き書式で太字にしていますが、条件付き書式を消して書式(太字)を
残したいと思っていますがVBAでの方法があれば御教示お願い致します。
(今回はVBAで対応したいです)

もしVBAで上記処理が出来ないのであれば、二つのワークシートの同セル同士を比較して、同じ値で
なければ太字にする(同じ値であれば何も処理しない)という事をVBAで行いたいです。
ご教示の程お願い致します。

A 回答 (4件)

こんばんは。


不可逆なマクロですから、バックアップを取るなりしてお使いください。
条件付き書式は、太字以外が含まれていても、その書式は削除されてしまいます。

元のマクロを作った人のサポートもあるかもしれません。

'//
Sub ChangeFormat()
 Dim Rng As Range
 Dim c As Range
 On Error Resume Next
 Set Rng = Cells.SpecialCells(xlCellTypeAllFormatConditions)
 If Err() <> 0 Then MsgBox "条件付き書式が見当たりません。", vbExclamation: Exit Sub
 On Error GoTo 0
 For Each c In Rng.Cells
  If c.DisplayFormat.Font.Bold = True Then
   c.Font.Bold = True
  End If
 Next
 Cells.FormatConditions.Delete
End Sub
    • good
    • 0
この回答へのお礼

ありがとうございます。
条件付き書式のあるシートで本マクロを実行しましたが、
応答なしで処理が固まってしまいました。

お礼日時:2018/12/18 14:49

こんばんは。



>条件付き書式のあるシートで本マクロを実行しましたが、
>応答なしで処理が固まってしまいました。

たぶん、PCのスペック等の問題ではないかと思っています。
どこで、フリーズしたかにもよりますね。

例えば、
ループの中だったら、
 Application.ScreenUpdating = False
'この中でループさせる
 Application.ScreenUpdating = True

Cells.FormatConditions.Delete
だとしたら、
Rng.FormatConditions.Delete
に入れ替えてみたらどうでしょうか。
    • good
    • 0
この回答へのお礼

ありがとうございます。
ループ中だったのでご指摘の通り描画停止したら問題ありませんでした。

お礼日時:2018/12/19 09:43

こんばんは!



前回回答した者です。

結局変化したセルだけを太字にしたい!というコトですよね。

データ数が極端に多い!というコトだったので
1セルずつループさせると砂時計がクルクル回るだけで「応答なし」の状態になると思い、
前回のようなコードにしました。
すなわち、書式設定も1セルずつ検索していてはどうにもならないので、

質問文にある後者のやり方
>もしVBAで上記処理が出来ないのであれば、・・・
のやり方が簡単だと思います。

その方法が前回の回答のNo.3になります。
速度重視で書式まで処理するとなるとはやり、Excelの機能を併用した方が速いと思います。

No.3の方法は試されたのでしょうか?m(_ _)m
    • good
    • 0
この回答へのお礼

ありがとうございます。
№3の方法は試してうまく処理する事は出来ています。
今回、とある理由でsheet3を削除しても太字の状態(条件付き書式を消しても太字の状態)を
維持したかったため、追加質問させて頂きました。

お礼日時:2018/12/19 02:00

>とある理由でsheet3を削除しても太字の状態(条件付き書式を消しても太字の状態)を


維持したかったため

マクロじゃありませんが、私ならクリップボード経由でコピペします。
    • good
    • 0
この回答へのお礼

ありがとうございます。
今回はそれをVBAで出来る方法が無いかの質問でした。

お礼日時:2018/12/19 15:41

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