'アクティブセルがB列か判定 If Not Intersect(Range("B:B"), ActiveCell) Is Nothing Then Debug.Print "範囲内" Else: End If
任意のセル範囲が指定セル範囲に含まれているかを調べるにはIntersectメソッドを使用します
コード解説
任意のセル範囲とは、ユーザーが選択しているセル範囲であったりする
動的に変化する指定セル範囲のことになります
このコードでは、ActiveCellの部分になります
指定セル範囲とは、処理の実行を前提とした固定の指定セル範囲のことになります
ActiveCellがこのセル範囲内にあれば処理を実行するような判定の親要素のセル範囲になります
コードでは、Range(“B:B”)になります
このコードを実行した時点のアクティブセルの位置によって処理が分岐します
引数のセル範囲は順番は関係ありませんので、入れ替えても使用可能です
If Not Intersect(Range("B:B"), ActiveCell) Is Nothing Then
ここで条件分岐を行っています
Intersectメソッドは重複する範囲が存在しない場合は「Nothing」を返します
Nothingは文字列ではないので、比較には「Is」演算子を使用します
これで、重複する範囲が無い時はTrueとなります
ただそれでは処理上少しわかりにくいので、逆説を取って判定します
その為に「Not」演算子を合わせて使用します
これで、範囲内に存在する場合にTrueになります
主な使用場面
ユーザーにセル範囲を指定させて処理を実行するような場合には、必ず使用します
データを入力したり、背景色を変更したりするような処理であった場合に、見出しのセル範囲であったり、関数の入力されたセルを指定されては困ります
そういった場合に、処理の実行前にこのコードで実行可否を判定します
また、Range(“B:B”)の部分を名前定義セルにすれば複雑なセル範囲も簡単に指定できますのでおすすめです
このコードをより実用的に使用するには、以下の記事にある方法を使用します
関連の記事