Selectionと似たものに、ActiveCellというものがあります。
Sub Macro2()
'
' Macro2 Macro
' マクロ記録日 : 2002 4 21 ユーザー名 : ひしだま
'
'
Range("B2:D2").Select
Range("C2").Activate
ActiveCell.FormulaR1C1 = "a"
End Sub
複数範囲を選択し、タブキーを使って移動して値を入力するとこうなりました。
これもSelectionと同じように直すことができます。
Sub Macro2()
'
' Macro2 Macro
' マクロ記録日 : 2002 4 21 ユーザー名 : ひしだま
'
'
Range("B2:D2").Select
Range("C2").FormulaR1C1 = "a"
End Sub
法則: | セルをActivateしてActiveCellで使うものは、一つにまとめられる。 | ||
例: | ほげほげ.Activate ActiveCell.動作 |
→ | ほげほげ.動作 |
Sub Macro3()
'
' Macro3 Macro
' マクロ記録日 : 2002 4 21 ユーザー名 : ひしだま
'
'
Range("B2").Select
ActiveCell.FormulaR1C1 = "a"
End Sub
SelectしてからActivateCellで使っています。
これは、Selectで複数セルを選択する(太枠で囲まれ背景色が変わる)と、
その内の1つのセルは必ずアクティブ(白い背景)になっていることを
利用しているのです。
1つのセルしか選択していない場合でも、たまたま1つしか選択されていないだけで、
考え方は同じです。
そこで、1つのセルしか選択されていない場合は、 次のように直すことができます。
Sub Macro3()
'
' Macro3 Macro
' マクロ記録日 : 2002 4 21 ユーザー名 : ひしだま
'
'
Range("B2").FormulaR1C1 = "a"
End Sub
特定範囲全てに同じ値を入れたい場合でも、同じようにすることができます。
ふつうにマクロを記録すると
Sub Macro4()
'
' Macro4 Macro
' マクロ記録日 : 2002 4 21 ユーザー名 : ひしだま
'
'
Range("B3:E3").Select
ActiveCell.FormulaR1C1 = "a"
Range("B3:E3").Select
Range("C3").Activate
ActiveCell.FormulaR1C1 = "a"
Range("B3:E3").Select
Range("D3").Activate
ActiveCell.FormulaR1C1 = "a"
Range("B3:E3").Select
Range("E3").Activate
ActiveCell.FormulaR1C1 = "a"
Range("B3:E3").Select
End Sub
範囲選択(Select)が何度も入っていて、見るからに無駄です。
Sub Macro4()
'
' Macro4 Macro
' マクロ記録日 : 2002 4 21 ユーザー名 : ひしだま
'
'
Range("B3").FormulaR1C1 = "a"
Range("C3").FormulaR1C1 = "a"
Range("D3").FormulaR1C1 = "a"
Range("E3").FormulaR1C1 = "a"
End Sub
ActivateとActiveCellを1つにする法則も使って、すっきりしました。
しかし、選択された範囲全てに同じ値を入れる場合は、
Sub Macro4()
'
' Macro4 Macro
' マクロ記録日 : 2002 4 21 ユーザー名 : ひしだま
'
'
Range("B3:E3").FormulaR1C1 = "a"
End Sub
だけで済みます。