日別アーカイブ: 2015年2月16日

Excel vba でセルの値が変更されたら実行する処理を書いてみる

例えば、顧客管理の中で配送業者名(あるいはその記号)を入力した時に、セルの色を変えたいなんてことがあった。

Worksheet_change_01

こんな感じで、運送業者や配送方法によってセルの色を変えたいという要望ね。

Excel2007以降は「条件付き書式」でいくつも指定できるから、単純にセルの色だけを変えたい場合にはそれを使っても良いでしょう。

しかし、今回は他の処理も同時に行いたいという要望もあったので「条件付き書式」では対応が出来なかった。

そこで使うのが「change」というイベントプロシージャ。

Worksheet_change_02

changeというイベントプロシージャは、そのワークシートのどこかのセルが変更されたら実行するもの。

そして、「Target As Range」ということから、Targetという変数にはRangeが渡される(正しくはRangeオブジェクト)。

実行される処理としては、変更されたセルがH列の場合にセルの色を変える内容が書かれている。

まぁ、この例は単純なもので、

case “s”
Cells(Target.Row, Target.Column).Interior.ColorIndex = 35

の後に

 Cells(Target>row, Target.Column + 1).value = “佐川急便元払”

とか、なにか処理を続けても良いと思うのね。

 
このchangeイベントはけっこう便利。