Excel VBA セルを参照する SpecialCells Union Intersectメソッド

スポンサーリンク

セルを参照するメソッド一覧

メソッド内容
SpecialCells【スペシャルセルズ】条件を満たすすべてのセルを参照します。
Union【ユニオン】複数のセルやセル範囲をまとめて参照します。
Intersect【インターセクト】セル範囲で重複するセル範囲を参照します。

SpecialCells【スペシャルセルズ】メソッド

指定したセル範囲の中で条件を満たすすべてのセルを取得するには、SpecialCells【スペシャルセルズ】メソッドを使用します。

SpecialCells【スペシャルセルズ】メソッドの書式と設定値(引数)の説明

[]内は省略可能です。
オブジェクト.Specialcells(type[,value])
【戻り値】Rangeオブジェクト

  • オブジェクト(必須)
    取得するセル範囲をRangeオブジェクトで指定します。
  • type【タイプ】(必須】
    取得するセルの種類をxlCellType列挙型の定数で指定します。
xlCellType列挙型の定数
定数内容
xlCellTypeAllFormatCouditions
【エックスエルセルタイップオールフォーマットコンディション】
条件付き書式が設定されているセル
xlCellTypeAllValidation
【エックスエルセルタイプオールバリデーション】
入力規則が設定されているセル
xlCellTypeBlanks
【エックスエルセルタイプブランク】
空の文字列
xlCellTypeComments
【エックスエルセルタイプコメンツ】
コメントが含まれているセル
xlCellTypeConstants
【エックスエルセルタイプコンスタンツ】
定数が含まれているセル
xlCellTypeFormulas
【エックスエルセルタイプフォーミュラーズ】
数式が含まれているセル
xlCellTypeLastCell
【エックスエルセルタイプラストセル】
使われたセル範囲内の最後のセル
xlCellTypeSameFormatConditions
【エックスエルセルタイプサムフォーマットコンディションズ】
同じ条件付き書式が設定されているセル
xlCellTypeSameValidation
【エックスエルセルタイプサムバリディーション】
同じ入力規則が設定されているセル
xlCellTypeVisible
【エックスエルセルタイプビジブル】
すべての可視セル
  • Value【バリュー】(省略可)
    引数typeにxlCellTypeConstants(定数)または、xlCellTypeFormulas(数式)を指定した場合は引数ValueにxlSpecialCellsValue列挙型の定数を指定して特定の種類の定数や数式を含むセルだけを取得することができます。省略した場合は、すべての定数および数式が対象になります。

    xlSpecialCellsValue列挙型の定数
    定数内容定数内容
    xlErrors
    【エックエルエラーズ】
    エラー値xlNumbers
    【エックスエルナンバーズ】
    数値
    xlLogical
    【エックスエルロジカル】
    論理値xlTextValus
    【エックスエルテキストバリューズ】
    文字

※数値と文字を指定したい場合は「xlNumbers+xlTextValus」のように「+」演算子でつなぎます。


※指定できる設定内容は「選択オプション」ダイアログボックスの項目に該当します。このダイアログボックスは「ホーム」タブの検索と選択」ボタンの「条件を選択してジャンプ」をクリックすると表示されます。

※SpecialCells【スペシャルセルズ】メソッドで指定した種類のセルに該当するセルがあることが前提となるため、セル範囲に指定した種類のセルがない場合はエラーになります。


表の中の数値だけ参照してクリアするコード例

Sub スペシャルセル()
Range("A1").CurrentRegion _
.SpecialCells(xlCellTypeConstants, xlNumbers).ClearContents
End Sub

実行前

実行後


Union【ユニオン】メソッド

複数のセルやセル範囲をまとめて参照するには、Union【ユニオン】メソッドを使用します。

Union【ユニオン】メソッドの書式と設定値(引数)の説明

[]内は省略可能です。
[オブジェクト].Union(セル範囲1,セル範囲2[,・・セル範囲n])
【戻り値】Rangeオブジェクト

  • オブジェクト(省略可)
    Applicationオブジェクトを指定します。省略可能です。
  • セル範囲(必須)
    まとめたいセルやセル範囲をカンマで区切って指定します。最低限2つ以上のセルやセル範囲を指定します。

離れた範囲の表範囲に罫線を引くコード例

Sub ユニオン()
Union(Range("A1").CurrentRegion, Range("A5").CurrentRegion).Borders.LineStyle = True
End Sub

実行前

実行後


Intersect【インターセクト】メソッド

セル範囲で重複するセル範囲を参照するには、Intersect【インターセクト】メソッドを使用します。

Intersect【インターセクト】メソッドの書式と設定値(引数)の説明

[]内は省略可能です。
[オブジェクト].Intersect(セル範囲1,セル範囲2[,・・セル範囲30])
【戻り値】Rangeオブジェクト

  • オブジェクト(省略可)
    Applicationオブジェクトを指定します。省略可能です。
  • セル範囲(必須)
    重複を部分を確認したいセル範囲をカンマで区切って指定します。最低限2つ以上のセル範囲を指定します。

重複範囲がない場合はNothing【ナシング】が返ります。重複範囲がない可能性がある場合は重複範囲が無かった場合の処理をしないとエラーになります。


重複範囲が無い場合の処理コード例

Sub 重複セル()
Dim 重複 As Range
Set 重複 = Application.Intersect(Range("A1:C5"), Selection)
If 重複 Is Nothing Then
  MsgBox "選択範囲外です。"
Else
  重複.Select
End If
End Sub

全セルに対して選択したセル範囲のアドレスを取得するコード例

Sub 重複セル2()
MsgBox Intersect(Cells, Selection).Address(False, False)
End Sub

実行前

実行後


以上で、SpecialCells【スペシャルセルズ】メソッド、 Union【ユニオン】メソッド、 Intersect【インターセクト】メソッドについての解説を終了します。ありがとうございました。

スポンサーリンク

関連記事・広告