3-4.セルの参照いろいろ②

SpecialCellsメソッド

○構文
Range.SpecialCells(Type,Value)

○処理
指定したType,Valueに一致するすべてのRangeオブジェクトを取得します。
該当するセルがない場合、エラーとなります。
取得する範囲は、Rangeで指定した範囲ではなく、使用されたセル範囲全体が基本となります。

SpecialCellsメソッドは、エクセルのショートカットキー Ctrl + G で表示される「ジャンプ」⇒「セル選択」の機能に該当します。

○引数

引数必須データ型内容
Type必須xlCellTypeセルの種類を指定
Value省略可xlSpecialCellsValueセル値の種類を指定

<Type>
取得したいセルの種類に応じて、下表のxlCellTypeを指定します。引数は数値でも指定できます。

xlCellType内容
xlCellTypeAllFormatConditions-4172条件付き書式が設定されているセル
xlCellTypeAllValidation-4174入力規則が設定されているセル
xlCellTypeBlanks4空白セル
xlCellTypeComments-4144メモが設定されているセル
※コメントではなくメモ
xlCellTypeConstants2値が定数のセル
xlCellTypeFormulas-4123値が数式のセル
xlCellTypeLastCell11使用されたセル範囲の最後のセル
xlCellTypeSameFormatConditions-4173Rangeと同じ条件付き書式が設定されているセル
xlCellTypeSameValidation-4175Rangeと同じ入力規則が設定されているセル
xlCellTypeVisible12可視セル

<Value>
引数Typeで、xlCellTypeConstantsまたはxlCellTypeFormulasを指定した場合のみ使用します。
取得したいセルの値の種類に応じて、下表のxlSpecialCellsValueを指定します。

引数は複数指定可能で、複数指定する場合は+で指定します。
例)値が数値 または 文字のセル
⇒Range.SpecialCells(xlCellTypeConstants,xlNumbers + xlTextValues)

xlSpecialCellsValue内容
xlNumbers1数値
xlTextValues2文字
xlLogical4論理値(True・False)
xlErrors16エラー値(#N/Aなど)
Sub SpecialCellsメソッドのサンプルコード()
    'エラーが発生した場合、エラーを無視して処理を続行する
    On Error Resume Next
    
    '数式エラーのセルを空白にする
    Cells.SpecialCells(xlCellTypeFormulas, xlErrors).Value = ""
    
    'メモが設定されているセルのメモをすべて削除
    Cells.SpecialCells(xlCellTypeComments).ClearComments
    
    'データが入力されている範囲を全てコピー
    Range(Range("A1"), Cells.SpecialCells(xlCellTypeLastCell)).Copy
    
    'Cellsは、シート内の全てのセルを取得
End Sub

UsedRangeプロパティ

○構文
Worksheet.UsedRange

○処理
指定したWorksheetで使用されている(されていた)セル範囲を取得します。
書式などを設定した場合、デフォルトの状態に戻しても、使用されていた範囲として取得されます。

Unionメソッド

○構文
Application.Union(範囲1,範囲2,…)

○処理
()内で指定したセル範囲をすべて合わせたRangeオブジェクトを取得します。
取得したセル範囲は、Areasプロパティでそれぞれの範囲を取得できます。

Sub Unionメソッドのサンプルコード()
    

  'A1とC5を合わせた範囲を選択
    Application.Union(Range("A1"), Range("C5")).Select

    'Areasプロパティを用いて、各セルに値を入力
    Application.Union(Range("A1"), Range("C5")).Areas(1).Value = "A1"
    Application.Union(Range("A1"), Range("C5")).Areas(2).Value = "C5"
    
End Sub

Intersectメソッド

○構文
Application.Intersect(範囲1,範囲2,…)

○処理
()内で指定したセル範囲がすべて重なる範囲のRangeオブジェクトを取得します。
該当するセルがない場合、エラーとなります。

Sub Intersectメソッドのサンプルコード()
    
    '任意のセル範囲内の空白セルに0を入力
    Application.Intersect(Range("A2:C5"), Cells.SpecialCells(xlCellTypeBlanks)).Value = 0
    
End Sub

コメント