VBAオンライン個人レッスン実施 -キーワードを集めて赤くせよ

エクセルVBAの個人レッスンのオンライン講座を行いました。

今回受講してくれたのは、5月に何度か受講してくれたNさんという男性です。5月のときはVBAの基礎を教えました。今回は仕事でエクセルを自動化したいことが起こり、自力では作れそうになかったので作り方を教わりたいということでした。

このように、仕事で作りたい処理があって講座を申し込んでくる人も多くいます。ただ、一度基礎を教えた人がしばらくしてから仕事で直面して教わりたいと言ってきたのは今回が初めてです。私としては嬉しいですね。

キーワードを検索して集める処理

Nさんが作りたかったのは、キーワードの検索処理でした。

複数のキーワードに対して、関連した文章が複数のシートに書かれています。
それぞれのキーワードを含む文章を集めて、キーワードの前後30文字を切り出して1つの表に書き出す、というものです。

そしてキーワードの部分だけ文字の色を赤くしたい。1つの文章の中にキーワードが2回以上出てくることもあります。

全部の要求を満たしたプログラムをいきなり作るのは難しいと思ったので、3段階に分けました。

  1. キーワードを含む文章を集めて全て書き出す
  2. キーワードの前後30文字で文章をカットしてそこだけ書き出す
  3. キーワードの文字を赤くする

3回の講座でプログラムが完成

キーワードのある文章を探すには、文章が書かれているシートの各セルのデータを変数に取り込んで、InStrコマンドでキーワードの有無を判定しました。

難しかったのは書き込むセルを決める部分です。書かれているシートごとに列を分けたかったので、次の結果を書くセルを探すのに頭を使いました。

キーワードの前後30文字で文章をカットするところは、キーワードが複数入っている文章の対応に工夫がいりました。ループ処理でn番目のキーワードがあるか?を探していって、最後のキーワードの31文字後ろをカットするようにしました。

キーワードの文字を赤くするには、結果の表に書き込んでからではないとできません。書き込んだあとで、キーワードの有無を調べるときに使った配列変数のデータを使って、赤字にするところを指定しました。

このように段階を踏んでプログラム作っていき、3回の講座で完成することができました。Nさんの仕事できっと役に立っていると思います。


エクセルVBAプログラムのオンライン講座を行っています。このように、作りたい処理がある場合はそのやり方を教えます。

エクセルVBAオンライン個人レッスンはストアカのサイトで受け付けています。

初心者歓迎です。興味のあるかたは受けてみてくださいね。