プロが教えるわが家の防犯対策術!

フィルターで抽出した状態で下記マクロ(数式を値に変える)を実行すると、
一部の行で見当違いな値に変わってしまいます。
何度か試行しましたが法則がつかめませんでした…

Sub 値に変える()
With Selection
.Value = .Value
End With
End Sub

なぜ抽出した行で上記マクロを実行すると一部の行で見当違いな値に変わって
しまうのでしょうか。また、抽出した行で実行しても正しく値に変えるために
は、どのようなマクロを登録すればよいでしょうか。

詳しい方 何卒よろしくお願い申し上げます。

「Excel フィルターで抽出した状態でマ」の質問画像

質問者からの補足コメント

  • 〉くんこば 様

    小職が行った操作について補足させていただきます。

    何卒 よろしくお願い申し上げます。

      補足日時:2021/11/03 17:48

A 回答 (2件)

こんにちは



手操作で、まとめてコピペ(あるいは値をペースト)しようとしてもできないのと同様の理由ですね。
(連続していない範囲のコピペはできない仕様)

>抽出した行で実行しても正しく値に変えるために
>は、どのようなマクロを登録すればよいでしょうか。
一セルずつ処理するか、area毎に分割して行うかですね。

area毎に処理する方が若干は速いはずですが、選択できる程度のセル範囲なら、ほぼ差はでないでしょうから、以下は一セルずつの例です。
For Each c In Selection.SpecialCells(xlCellTypeVisible)
 c.Value = c.Value
Next c
    • good
    • 1
この回答へのお礼

ご教示いただいた構文に差し替えて正しく実行できるようになりました。
連続していない範囲に対してのコマンドにはいろいろと制限があるのですね。
本当に勉強になります。
誠にありがとうございます。

お礼日時:2021/11/03 18:17

それマクロの問題?


数式の問題でなくて?

何にしても情報が少なすぎる。
    • good
    • 0
この回答へのお礼

補足させていただくべく新たに資料作成し補足コメントを利用してアップロードしようとしましたが不具合によりできませんでした。
コメントいただき、誠にありがとうございます。

お礼日時:2021/11/03 18:19

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