ExcelマクロVBA入門
第102回.Intersectメソッド

ExcelマクロVBAの基本と応用、エクセルVBAの初級・初心者向け解説
最終更新日:2019-07-22

第102回.Intersectメソッド


IntersectメソッドはApplicationのメソッドで、
複数のセル範囲の、重なっている部分のセル範囲を取得することが出来ます。


あるセルが、特定セル範囲内にあるかどうかを判定したり、
セル範囲の中から、特定の列や行の部分だけを取り出したりする場合に使います。

Intersectメソッド

複数のセル範囲の共有セル範囲を表すRangeオブジェクトを返します。
Application.Intersect(Arg1, Arg2, Arg3, ・・・, Arg30)

Arg1 セル範囲 (Range オブジェクト) を指定します。
Arg2 セル範囲 (Range オブジェクト) を指定します。
Arg3 セル範囲 (Range オブジェクト) を指定します。
Arg30 セル範囲 (Range オブジェクト) を指定します。

Application.は省略可能です。
Arg1とArg2は必須です、Arg3以降はオプションになります。

Intersectの使用例

あるセルが、特定セル範囲内にあるかどうかを判定
Dim isect As Range
Set isect = Intersect(Selection, Columns("B"))
If isect Is Nothing Then
  MsgBox ("B列が選択されていません。")
Else
  isect.Select
End If

シート上で選択されているセル範囲の内、B列だけを選択し直しています。
B列が選択されていない場合は、メッセージを表示しています。

セル範囲の中から、特定の部分だけを取り出す
VBA マクロ 画像

このような表において、B列のデータのみ消去します

Intersect(Range("A1").CurrentRegion.Offset(1), Columns(2)).ClearContents

Range("A1").CurrentRegionは、A1:C11
Range("A1").CurrentRegion.Offset(1)は、A2:C12
つまり、
A2:C12とB:Bの重なっているB2:B12がIntersectメソッドの戻り値になります。


Intersectメソッドは、セル範囲に関する処理では非常に応用範囲の広いメソッドです。
いつでも使えるようにしておきましょう。




同じテーマ「マクロVBA入門」の記事

第99回.Replaceメソッド(置換)

Replaceメソッドは、セル範囲内で条件に当てはまるセルの文字列を置換するものです。ReplaceメソッドはRangeオブジェクトのメソッドで、ワークシート操作の「検索と置換」の「置換」の機能をVBAで使うものです。VBA関数のReplace関数とは全く違うものになりますので使い分けが必要です。
第100回.InputBoxメソッド(インプットボックス)
InputBoxメソッドはApplicationのメソッドで、ユーザー入力用のダイアログボックスを表示し、表示したダイアログボックスに入力された情報を受け取ることが出来ます。マクロVBAの途中でユーザーに何らかの値を入力してもらう事で、その後の処理にその値を使う場合に使用します。
第101回.Midステートメント
Midステートメントは、文字列変数の一部を他の文字列に置き換えます。これは、VBAのステートメントで、Mid関数とは根本的に違うものです。Mid関数と誤解されがちですが、全く別物になります。Mid関数は、文字列の一部を取り出す関数ですが、Midステートメントは、文字列の一部を置換するものです。
第102回.Intersectメソッド
第103回.Unionメソッド
UnionメソッドはApplicationのメソッドで、複数のセル範囲を集め、1つのRangeオブジェクとして参照することができます。マクロVBAにおいて、セル範囲に次々に別のセル範囲を追加して、最後にまとめて処理するような場合に便利です。
第104回.GetPhoneticメソッドとSetPhoneticメソッド(フリガナ)
GetPhoneticメソッドは、指定した文字列の日本語の「ふりがな」を取得します。SetPhoneticメソッドは、セルに日本語の「ふりがな」を設定します。マクロVBAにおいて、「ふりがな」を扱う時はこれらのメソッドを使います。
第105回.Callステートメント
プロシージャーの中で他のプロシージャーを呼び出すときに、マクロVBAにおいてCallステートメントを使います。Callステートメントは、SubプロシージャーやFunctionプロシージャーに制御を渡し、Call先のプロシージャー終了後は、Callステートメントの次のステートメントに制御が移ります。
第106回.Functionプロシージャー
プログラム(マクロVBA)内で特定の作業を実行し値を返すプロシージャです。つまり、Functionプロシージャで独自の関数をつくれるということです。Subプロシードャーとの違いは、値を返すか返さないかの違いです。
第107回.プロシージャーの引数
Subプロシージャー、Functionプロシージャーにおける、引数リストの指定について説明します。引数は、呼び出し先のプロシージャーに渡すデータを指定するものです。Callステートメントでプロシージャーを呼び出すときに指定する引数を、呼び出される側のプロシージャーで受け取る記述についてのVBA記述の説明になります。
第108回.変数の適用範囲(スコープ,Private,Public)
変数には、その変数をVBA内で使う事ができる範囲が決められています。マクロVBAでは変数の使える範囲を、適用範囲(スコープ)と言います。適用範囲とは、宣言した変数を使う事のできる範囲です。変数を宣言した場所と宣言方法によって、その変数を使える場所が違ってきます。
第109回.列挙型(列挙体)Enum
列挙体は、数値限定のConst定数をひとまとめにして参照しやすくしたものになります、マクロVBAの中で数値を固定で記述することは、メンテナンスが大変になります。例えば、列位置3(C列)を参照する場合、VBA内で何度も3と記述しては、これを変更することが大変になります。


新着記事NEW ・・・新着記事一覧を見る

VBAにおける変数のメモリアドレスについて|VBA技術解説(11月8日)
空文字列の扱い方と処理速度について(""とvbNullString)|VBA技術解説(1月7日)
Errオブジェクトとユーザー定義エラー|VBA入門(11月5日)
シングルクォートの削除とコピー(PrefixCharacter)|VBA技術解説(11月4日)
ユーザー定義型の制限とクラスとの使い分け|VBA技術解説(11月3日)
クリップボードに2次元配列を作成してシートに貼り付ける|VBA技術解説(11月1日)
VBAクラスを使ったイベント作成(Event,RaiseEvent,WithEvents)|VBA技術解説(10月31日)
VBAクラスのAttributeについて(既定メンバーとFor Each)|VBA技術解説(10月19日)
VBAの用語について:ステートメントとは|VBA技術解説(10月16日)
VBAのマルチステートメント(複数のステートメントを同じ行に)|VBA技術解説(10月14日)


アクセスランキング ・・・ ランキング一覧を見る

1.最終行の取得(End,Rows.Count)|VBA入門
2.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
3.RangeとCellsの使い方|ExcelマクロVBA入門
4.Range以外の指定方法(Cells,Rows,Columns)|VBA入門
5.変数宣言のDimとデータ型|ExcelマクロVBA入門
6.繰り返し処理(For Next)|ExcelマクロVBA入門
7.マクロって何?VBAって何?|ExcelマクロVBA入門
8.ひらがな⇔カタカナの変換|エクセル基本操作
9.空白セルを正しく判定する方法(IsEmpty,IsError,HasFormula)|VBA技術解説
10.セルに文字を入れるとは(Range,Value)|VBA入門



  • >
  • >
  • >
  • Intersectメソッド

  • このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。


    記述には細心の注意をしたつもりですが、
    間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
    なお、掲載のVBAコードは自己責任で使ってください。万一データ破損等の損害が発生しても責任は負いません。




    このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
    本文下部へ