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

vbaエクセルマクロ
RemoveDuplicatesについて


重複したものがあれば行を削除するというプログラムでRemoveDuplicatesを使ってマクロを組んでいます。


重複したものがないとわかっているときにRemoveDuplicatesマクロを起動せずに作成したデータと
RemoveDuplicatesマクロを起動させて作成したデータを
(見た目は全く同じもの)

ある仕組みに投入したところ、
両方ともうまく処理が実行できます。

しかし、それぞれ全く同じ場所のある一つのセルを手入力で変更して投入すると

起動せずに作成したものではうまく処理が実行になるのに、起動させて作成したほうではエラーになり処理が実行できません。

重複したものがあれば削除してね、というマクロなので、重複したものがないとき
RemoveDuplicatesを起動しても、しなくても、全く同じデータになると思っているのですが、何かが変わってしまうのでしょうか。

思い当たることありましたら何でもいいので教えてください。

A 回答 (1件)

RemoveDuplicatesメソッドは、指定された範囲内で重複する値を検出し、それらを削除するために使用されます。

つまり、重複が存在しない場合、メソッドは何も行いません。ですから、起動する必要があるかどうかにかかわらず、同じデータになるはずです。

しかしながら、あなたが述べたように、手入力で一つのセルを変更しただけでエラーが発生するのは、そのセルが何らかの理由でRemoveDuplicatesメソッドが影響を与える範囲内にあるためかもしれません。可能性があるのは以下の通りです。

RemoveDuplicatesメソッドが適用される範囲が変更された
RemoveDuplicatesメソッドは、範囲内で重複する値を検出するため、範囲を変更すると結果が変わる可能性があります。手入力で変更したセルが、メソッドが適用される範囲に含まれるようになった可能性があります。

データに関連する条件付き書式がある
データに関連する条件付き書式がある場合、手入力で変更したセルが条件付き書式に該当する可能性があります。条件付き書式は、特定の条件に応じてセルを色付けするなどの表示効果を与えます。しかし、この表示効果は、RemoveDuplicatesメソッドが処理するデータと干渉する可能性があります。

マクロで他のプロパティが変更された
RemoveDuplicatesメソッドを実行するマクロは、セルの値だけでなく、フォント、色、罫線などのセルのプロパティにも影響を与える可能性があります。手入力で変更したセルには、フォントや色が変更されている場合があります。このようなプロパティの変更は、RemoveDuplicatesメソッドが正しく動作しない原因になる可能性があります。

上記のような可能性があるため、手入力で変更したセルが、RemoveDuplicatesメソッドが処理する範囲に含まれないようにするか、手入力で変更する前にRemoveDuplicatesメソッドを実行することをお勧めします。また、RemoveDuplicatesメソッドが処理する範囲を明示的に指定することも重要です。
    • good
    • 0
この回答へのお礼

詳しい回答ありがとうございます_(._.)_

RemoveDuplicatesメソッドはマクロの最後に起動するようにしています。
その後は全体をコピー&ペーストしてendで終了です。

手入力で変更するセルは、ある仕組みに投入するときは文字列ではないといけないので、

もしかしてRemoveDuplicatesを起動すると
セル全体の表示形式などに何らかの影響を与えるのかな、と思ったりしました。

お礼日時:2023/02/27 20:33

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

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A