YUKIBEのBLOG

日常のメモ書き

Excel:VBA:セル(Range)

参考

VBA セルを選択する (Range.Select, Selection)

Activate / Select

VBA 似た者SelectとActivateの違いを最速に理解 | 小さな書店の経営術
VBAのSelectとActivateの違い | Excel作業をVBAで効率化

選択、特定方法

Sub Cell__Sample()

'「Activate」ただ一つのものを選択する時に使う
'  選択範囲が指定範囲内ならば、選択範囲を変更せず、指定範囲内の開始1セルをActive
'  選択範囲が指定範囲外ならば、選択範囲を変更して、指定範囲内の開始1セルをActive
'  選択範囲を変更したくない場合は、範囲内で「Activate」
'    Activecell
  
'「Select」範囲を選択する時に使う
'  選択範囲をActiveにして、開始セルをActive
'    Selection

 
  Cells.Activate
  Range("B2:D4").Activate '選択範囲が変わらない(ActiveCellは「B2」)

  'セルを選択する
  Range("B1").Activate  '選択範囲が変わらない(ActiveCellは「B1」)
  
'-----------------------------------------------------------------
  '// シートがアクティブになっていないとエラー
  Worksheets("Sheet2").Range("A3").Select   '//  エラー
  Worksheets("Sheet2").Range("A3").Activate '//  エラー
  
  '// 参考:シート選択
  '// BOOKがアクティブになっていなくても「Active」は可能
  Workbooks("Book2").Worksheets("Sheet2").Select    '//  エラー
  Workbooks("Book2").Worksheets("Sheet2").Activate  '//  可能
'-----------------------------------------------------------------
  
  '単一セルを選択する
  Cells(2, 1).Select  ' A2
  Cells(1, "B").Select ' B1

  'セルを範囲選択
  Range("A1:B2").Select
  Range("A1", "B2").Select

  'セルをアクティブにする(選択範囲変更なし)
  Range("A2").Activate

  '離れたセルを範囲選択
  Range("E1, G2").Activate  '(選択範囲変更)
  Range("A1, C2").Select

  'Select と Activate の違い
  'Select:選択範囲がセル「C3」のみになります。
  Range("B2:D4").Select
  Range("C3").Select

  'Activate:選択範囲を維持したままセル「C3」をアクティブにします。
  Range("B2:D4").Activate
  Range("C3").Activate
  Range("C10").Activate '範囲から外れると、選択範囲はクリア

  Range("B2:D4").Activate
  Selection = "dd"
  
End Sub