2018.06.04皆様こんにちは、ノグチです。エクセルを使っていて、「エクセルのシートに入力したら、自動的に値をとってきてくれたらいいのに...」と思ったことはありませんか?セルにVLOOKUP関数を埋め込んだり、ボタンを配置しておいて、ボタンにマクロをセットしておいて、ボタンクリックによって検索させることもできますが、関数は仕込みすぎるとエクセルが重くなってしまいますし、入力して毎回ボタンを押すのも面倒...エクセルのシートに入力された得意先や仕入先名称の一部を入力すると即、マスタから正式名称を検索して取得してくれたら便利ですよね。今回は、そんな願いを叶えてくれる(かもしれない)、WorksheetオブジェクトのChangeイベントをご紹介します。目次イベントとはイベントはオブジェクトモジュールに記述するイベントはオブジェクトモジュール内のイベントプロシージャに記述するエクセルのイベントにはどんなものがあるのかChangeイベントとはVBEでコードを書く準備Worksheet_Changeが実行されるタイミングChangeイベントで入力されたセルの色を変える最後に連載目次:エクセルVBAのイベントを使ってもっと便利なツールにしよう!イベントとはまず、この記事で言うイベントとは、ボタンをクリックしたり、キーボードを操作したり、ファイルを開いたりといった、コンピューターに対してユーザーが行うアクションのことです。多くのプログラムでは、ユーザーのアクションを引き金(トリガーとも言う)にして、様々な処理を実行させています。VBAでもこのようなユーザーによる、プログラムにとって引き金になるアクションを「イベント」といいます。イベントはオブジェクトモジュールに記述するエクセルのイベントを記述するにあたって、基本的な決まり事が2つあります。一つ目は、イベントはイベントを検知したいオブジェクトモジュール内に記述するということ。WorksheetオブジェクトのChangeイベントの場合、Changeイベントを検知したいシートのオブジェクトモジュールに記述する必要があります。Sheet1でChangeイベントを検知したいのであれば、Sheet1のオブジェクトモジュール内に記述する、ということですね。イベントはオブジェクトモジュール内のイベントプロシージャに記述する2つめは、イベント時に実行したい処理は、イベント専用のプロシージャ内に記述するということ。イベントに対して専用のプロシージャが1つ用意される(イベントプロシージャといいます)ので、イベント時に実行したい処理は全てこのイベントプロシージャの中に書き込む必要があります。エクセルのイベントにはどんなものがあるのかエクセルVBAでも様々なイベントが用意されていて、このイベントに任意のコードを書いておくことによって、そのイベントが起こった時に任意の処理を自動的に実行させることができます。代表例としてこんなものがあります。ブックが開かれたことChangeイベントとは今回の記事では、上で挙げたイベントのうち、今回はWorksheetオブジェクトのChangeイベントをご紹介します。WorksheetオブジェクトのChangeイベントは、ユーザーがセルに文字を入力したり、削除したりなど、シートに対して何らかの変更を加えるアクションを行うことで発生するイベントです。コードでは、このように記述します。Sub先述した通り、Worksheet.メソッド、のようにコード内に記述するのではなくて、イベントに対してプロシージャが一つ用意されるので、このプロシージャの中に、シート上で変更があった場合に実行して欲しい処理を書き込んでいけばOKなのです。引数のTargetには、シート上で変更があった範囲がRange型で渡されます。VBEでコードを書く準備では早速、Changeイベントにコードを書いていきましょう!まず、シート名にマウスのカーソルを当てて、右クリックします。右クリックで表示されたメニューの中から、「コードの表示」をクリック。すると、見慣れたVBEの画面が開きます。VBEの左側にある、プロジェクトエクスプローラーのカーソルが、「Sheet1」にあたっていますね。この状態で、画面右側、コードウインドウの上にある2つのプルダウンメニューのうち、左側のメニューを開いて、「Worksheet」をクリックします。このとき、コードウィンドウに「Worksheet_SlectionChange」のプロシージャができてしまう場合は、Worksheet_Changeプロシージャを作ってからそっと削除しておきましょう。左側のプルダウンメニューから「Worksheet」を選択すると、右側のプルダウンメニューの内容が変わるので、その中から「Change」を選びます。すると、コードウインドウにWorksheet_Changeのプロシージャができますね。これで、Changeイベントのコードを書く準備ができました!Worksheet_Changeが実行されるタイミングWorksheet_Changeプロシージャが実行されるタイミングも確認しておきましょう。プロシージャの頭にブレークポイントを置いて、実際にセルに値を入力してEnterキーを押してみると...この通り、即Worksheet_Changeプロシージャが実行されるのがわかりますね。Changeイベントで入力されたセルの色を変えるでは、このChangeイベントで、シート上のセルに変更があったセルの色を変えてみます。Subそしてシートに値を入力してみると...こんな感じで、Worksheet_Changeプロシージャが実行されて、実際に変更があったセルの色を変えることができます。最後に今回は、WorksheetオブジェクトのChangeイベントをご紹介しました。次回記事では、このChangeイベントを使ってセルに得意先名や仕入先名の一部を入力したら、マスタシートから得意先・仕入先の正式名称を取得させる方法をご紹介しています。【エクセルVBA】ChangeイベントとEnableEventsプロパティで部分一致検索をする方法WorksheetオブジェクトのChangeイベントと、ApplicationオブジェクトのEnableEventsプロパティを使って、セルに得意先名の一部を入力したら、マスタシートから正式名称を取得して入力セルに返す、というコードをご紹介しています。面倒かつ間違い易い入力作業は、出来るだけ簡略化したいですね。tonari-it.com2018.06.05それでは、最後までお読みいただきありがとうございました!連載目次:エクセルVBAのイベントを使ってもっと便利なツールにしよう!エクセルVBAでリストの重複を排除する方法として、Dictionaryオブジェクトを使った重複排除の方法をご紹介しています。投稿者プロフィールノグチフリーランスPG・SE元製造子会社SE。業務システム保守・導入両方やった経験をお伝えすることで、少しでもシステムや手作業に悩まされる人が減ればいいなぁと日々夢見ております。「コミュニティ+講座」形式で継続性&教え合える環境も提供。!ノンプログラマーがプログラミングスキルを身に着ける支援ををするコミュニティ。セミナー・もくもく会・Facebookグループのサポートで「自らで学び続ける力をつける」支援、「教え合うことで学びの価値を上げる」場の提供をしています。今回はエクセルVBAでThisWorkbook.Pathを使ったファイル名フルパスを定数っぽく使えるようにする方法をお伝えします。これで、パス指定が変更になっても一か所の修正で済むようになり便利です。【エクセルVBA】FileSystemオブジェクトでファイルやフォルダが存在するかを判定するエクセルVBAのFileSystemオブジェクトでファイルやフォルダの操作をする方法をお伝えしています。今回はFileExists、FolderExistsメソッドでファイル・フォルダの存在を判定します。2017.03.22Excel・VBA活用術VLOOKUP関数の使い方とその威力を存分に味わうデータ準備Excel中級への最初の難関とも言えるVLOOKUP関数。使いこなせればこれほど便利な関数もないのですが、データの準備方法に問題があると、なかなかマスターすることができません。今回の記事では、そのデータ準備で気を付けるポイントについてお伝えします。2015.03.06Excel・VBA活用術エクセルピボットテーブルとVLOOKUPを組み合わせて複数のリストを合体!エクセルのピボットテーブルとVLOOKUP関数を使って、複数のリストを一つの表にまとめる方法をご紹介しています。【エクセルVBA入門】データの重複を防ぐSubプロシージャの作成エクセルVBAを使ってバラバラの経費精算書データを集約するシリーズもいよいよ8回目、そして最終回です。同じ経費精算書データを取り込む際のデータ重複を防ぐ重複削除プロシージャを作成していきます。2015.09.07Excel・VBA活用術エクセルファイルの不要な更新を防ぎたい!読み取り専用を推奨する・書き込みパスワードを設定するエクセルファイルで「読み取り専用を推奨する」「書き込みパスワードを設定する」方法を紹介します。ファイルを更新したいのに誰かが開きっぱなし!意図しない第三者に更新されてしまった!そんな悩みを一瞬で解決する便利技です。「コミュニティ+講座」形式で継続性&教え合える環境も提供。詳細・お申込はこちら隣ITを応援する当ブログを「応援したい!」「役に立ったよ!」というお気持ちを、コチラからお支払いただくことができます。日々更新の活力倍増いたします。※PayPalアカウントが必要です。※金額は変更可能です。Platform23HTML・CSS32iPhone・アプリ29Monaca・スマホアプリ開発7PC全般・Windows86PowerPoint・VBA28Python87RPA1VBScript15Vue.js・JavaScript13WEBサービス・クラウド68WordPress・ブログ88Word・VBA42コミュニティ・イベント108セミナーのお知らせ11チャットワーク72データ分析・アクセス解析40仕事・生産性・働き方73動画配信8商業出版21起業・フリーランス72電子書籍・Kindle3運営会社プランノーツは"IT×働き方改革"をお手伝いする会社です。「コミュニティ+講座」形式で継続性&教え合える環境も提供。詳細・お申込はこちら隣ITを応援する当ブログを「応援したい!」「役に立ったよ!」というお気持ちを、コチラからお支払いただくことができます。日々更新の活力倍増いたします。※PayPalアカウントが必要です。※金額は変更可能です。Platform23HTML・CSS32iPhone・アプリ29Monaca・スマホアプリ開発7PC全般・Windows86PowerPoint・VBA28Python87RPA1VBScript15Vue.js・JavaScript13WEBサービス・クラウド68WordPress・ブログ88Word・VBA42コミュニティ・イベント108セミナーのお知らせ11チャットワーク72データ分析・アクセス解析40仕事・生産性・働き方73動画配信8商業出版21起業・フリーランス72電子書籍・Kindle3運営会社プランノーツは"IT×働き方改革"をお手伝いする会社です。RowSourceプロパティとAddItemメソッド2020.01.21GASでGoogleスライドのSlideオブジェクトの概要とその取得方法2020.01.162020.01.24Facebookページいつも隣にitのお仕事タイトルとURLをコピーしました。