エクセルVBAで連続置換時に置換前と後の文字列を比較する方法

こんにちは~。「デザインもできるシステムエンジニア」のあつもり(@atumori17)です。今日も業務効率化のアイデアを発信していきますっ!

前回は「複数の文字列・単語をまとめて連続置換する方法」を紹介しました。今回はこのプログラムをより使いやすいものにしていきたいと思います。

連続して文字列を置換したときに、置換する前の文字列と比較したいと思ったことはありませんか?プログラムがきちんと動いているかの確認にもなるし、置換表の定義が間違っていて正常に置換されていなかった、なんていうときも原因を探す手がかりになりますよね。

そこで今回は「連続置換時に置換前と後の文字列を比較する方法」を紹介します。

イメージはこんな感じです。

連続置換プログラムを修正する

チェックボックスを加える

前回作成した「連続置換.xls」を開きUserForm1を開きます。新たにチェックボックスとラベルを配置します。ラベルの文言は「置換前と比較する」としましょう。

サンプルコードを貼り付ける

「連続置換」ボタンをダブルクリックしてコードウィンドウを開きます。「CommandButto1_Click()」の下に以下のコードを貼り付けます。

プログラムコードの解説

それではプログラムコードの解説をしていきます。重要なポイントに絞って説明していきます。全体の流れは過去に掲載した記事と同じですので、参考にしてみてください。

エクセルVBAでセル内の文字列に含まれる改行を一括で削除する方法
ワークシートのセル内にある改行を消したいって思ったことありませんか?データを別のアプリケーションに取り込んだり、データベースに登録したりするときに改行が邪魔になることがあります。そんな時に改行を一括で削除できるツールがあったら便利ですよね。

プログラムの流れは以下のようになります。

  1. 処理対象列を選択する
  2. 処理対象列をコピーして挿入する
  3. 処理対象ワークシートのデータを1行ずつ取り出す
  4. 処理対象列のデータと挿入した列のデータを比較して違っていたらセルに色をつける
  5. 置換表ワークシートの数だけ置換を繰り返す

Selection.Copyメソッドで列をコピーして挿入する

Selection.Copyメソッドを使うことで選択状態の列をコピーすることができます。Selectionは選択された列や行などのオブジェクトを差します。

Selection.Copy

続いてSelection.Insertメソッドでコピーした列を挿入します。

Selection.Insert Shift:=移動方向

Selectionは選択された列や行などのオブジェクトを差します。これはSelection.Copyメソッドと同じです。移動方向は列や行を挿入したときにどちらの方向に移動するかを指定します。列の場合は必ず右方向、行の場合は必ず下方向に移動します

今回のプログラムを見てみましょう。上記のプログラムコードの28~39行目です。
まずInputBoxを出して列を選択させます。そして選択状態の列をコピーし挿入しています。

上記コードの65~68行目で出てくる、withステートメントとoffsetプロパティについては下記の記事で詳しく解説しています。

エクセルVBAで同じデータが切り替わる項目ごとに空白行を挿入する方法
エクセルシートの見栄えを整えていると項目ごとに空白を入れたいっていうケースがあると思います。そこで今回はVBAを使って「項目ごとに空白行を挿入する」プログラムを作っていきます。職場など複数人で作業する場合、エクセルの集計機能などを使うより便利だからです。

プログラムコードの解説は以上です。

置換前と後の文字列を比較するプログラムの動作確認

それでは実際に出来上がったプログラムを動かしてみましょう。

ワークシートの起動ボタンを押します。

フォームが表示されたら「置換前と比較する」チェックボックスにチェックを入れ、「連続置換」ボタンを押します。InputBoxが表示されたら置換対象列を選択し、OKボタンを押します。

新たにB列が挿入されました。B列には置換後のデータが入っており、置換されたセルに色がつきました。置換表のルールにない文字列のセルには色がついていません。

まとめ

いかがでしたか?今回の内容をまとめます。

  • 選択した列をコピーするにはSelection.Copyメソッドを使う
  • 選択した列を挿入するにはSelection.Insertメソッドを使う

それではまた~。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする