VBA選択している範囲にある数式(シート関数)を値に固定したあと、ついでに#N/Aエラー(と#DIV/0エラー)を消去するマクロを紹介します。同じ場所にそのまま「値貼り付け」#N/Aを""に置換を自動でやるマクロです。使い方例のように実行しちゃえばOKです。コードをしっかり読みたい方は、解説もどうぞ。使いどころ要するに、VLOOKUPの強化パーツです。関数がコピーされ、ついでに範囲も選択もされる。値が固定され、エラー値が空セルになります。単発の業務で、値さえあればいいような資料で連打しますね。値を固定するときにも使えますので、VLOOKUP以外の関数とか、ただの足し算とかにも使えます。置換するか、If関数書くかの、どっちかやるのをサボりたいという願いが生んだマクロです。シート全体に対しても実行可能」です。範囲が広すぎて遅くなったりはしませんのでご安心を。残念ながらショートカットを持っていません。個人用マクロブックに登録して、クイックアクセスツールバーに登録したほうがいいでしょう。("Ctrlキーで複数選択されたエリアには実行できません。Sub上のコード内でCallされている3つの関数は、便利マクロ用の共通関数です。別のページからコピーしてお持ちの方は、ここから先はコピーは不要です。Subコードの解説メインコードの解説メインコードは超単純ですね。選択範囲を選択範囲へ「値貼り付け」して、そのあとエラー値を置換しているだけです。数式作成者が意図しないミスに気づかず空白になると困るので置換しません。今後のマクロを書くうえでかなり重要な技術になると思います。こんなくだらないマクロの記事なんか読んでないで、こちらの記事へどうぞ。後の部分はおまけです。("Ctrlキーで複数選択されたエリアには実行できません。Ifとりあえず、Ctrlキーを押しながらセルを複数エリア選択している場合は、うまく動きませんので除外します。lookat:=xlPart)この部分で、まったく意味のないFindメソッドを起動しています。これは「検索ダイアログの設定の上書き」を行っています。手でやるシート上の検索は、部分一致でやりたい場面が多いです。Replaceメソッドは「検索ダイアログ」の設定を共有しているため、マクロ実行後に「xlWhole:セルの内容が完全に同一であるものを検索する」になってしまいます。これを部分一致xlPartに記憶させなおしています。システムの設定値をキレイにいじる方法があるんだろうけど、ちょっと調べてもすぐわかんなかったからこれでいいや。共通関数の使い方あとのCallしている関数は、私のすべての便利マクロでの共通処理です。お持ちの方はコピペは不要です。今回の例では、↓ここで「D列全体」を選択して実行してもOKです。EventのON/OFF」をまとめたやつですね。「Isブック計算をOFFに」にはFalseを渡します。(描画とEventは大抵は停止するので省略可。「WorksheetChangeイベントを起こさない」ためです。大規模な置換を実行すると、Excelが固まり、たまに屍になりますのでご注意を。コードの説明はこれで終わりです。「かゆい所に手が届くように」という処理のせいですね。メインコードは短く単純なので、この辺はあまり気にせずじゃんじゃん使ってください。圧倒的な使用率を誇ります。表を作るより、表を見て考えることが主な業務ということもあるんでしょうけど。「作るのにかかった時間>>アドインが削減した時間」でも気にしないで、ガンガンアドインを作るんですけどね。時間対効果を度外視して、丹精込めて作ったかわいいエリートアドインたちも、このアホみたいな単純マクロに勝てません。悲しいですが、実務においては、どれだけ努力したかより、得られた結果がすべてなのです。Sub我ら使い捨て資料3銃士!(シャキーン)ついでに持って行って、どうぞ。「日本語の変数でプログラミングすれば、みんなが幸せになれる」という思想の元、主にExcelVBAのマクロやコードを解説しているブログです。この思想については↓の記事をご覧ください。変数を日本語にすればプログラミングが上達する記事の更新通知や質問の回答はTwitterでも行っております。お気軽にフォローください。12はてなブログをはじめよう!LimeCodeさんは、はてなブログを使っています。ブログを報告する引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。