'アクティブブックをオブジェクト変数に代入 Dim ブック As Workbook: Set ブック = ActiveWorkbook 'オブジェクトを開放 Set ブック = Nothing
'アクティブシートをオブジェクト変数に代入 Dim シート As Worksheet: Set シート = ActiveSheet 'オブジェクトを開放 Set シート = Nothing
'アクティブセルをオブジェクト変数に代入 Dim セル As Range: Set セル = ActiveCell 'オブジェクトを開放 Set セル = Nothing
オブジェクト変数にそれぞれの代入と処理後に使用する解放のコードです
この処理では、アクティブなものを代入する形になっているので処理中の動的なオブジェクトへの対応が可能になります
また、オブジェクトは変数の型がそれぞれちゃんとあり
それらを使用することで、インテリセンス入力が出来るようになるので代入オブジェクトの型が確定している場合は型宣言もしっかり行います
「ブック.」と入力すれば使用可能なメソッドとプロパティが表示されます
他のシートとセルも同じです
一応、全てのオブジェクトはobject型に代入することは可能です
ブックやシートの代入は、主には新規作成した物をを代入することが多いかもしれません
ブックの新規作成を行うと、そのブックがアクティブブックになるのでこのコードを使用して、新規作成ブックを簡単に操作することが可能になります
シートの新規作成も同じ使い方になります
セルの代入は別ブック・シートのセルを代入させることが多いです
別ブックやシートのセルはその上位のオブジェクト名から指定する必要があるので変数を使用しない場合、コードが非常に長くなってしまい可読性が低下します
セルもシートも同じですが、アクティブを代入するだけで上位のオブジェクトも含めて代入されるので、ブック間を移動する処理であれば非常に便利で分かり易くなります
こんな感じのものが実際に代入されています
コード 「Set セル = ActiveCell」
実際 「Set セル = ActiveWorkbook.ActiveSheet.ActiveCell」
この例文の「セル」の2文字だけで済むのがいかに簡潔になっているかが分かると思います(使用時は分かり易い変数名に変更してください)
最後に変数の解放はしっかり行ってください
上記にあるように、「ブック」という変数にはブックの情報すべてが変数に代入されています
シート情報もその中のセル全ての情報が入っているわけです
これをメモリ上に保持しているわけですから、もう使用しないのに保持しておくことはメモリを無駄に消費している、ということがなんとなくイメージできると思います
なので、1つだけなら処理速度に影響ないし、とは考えずに解放は行ってください
関連の記事