VBAトレーニング-02 [ブック&シート操作について-②]-[シートオブジェクトの切り替え方法]

このページで学習出来る事

 VBAトレーニング2回目となる今回は、前回に引き続きExcelブックとシートの使い方について説明をしていきたいと思います。

 ただ単純にシートを切り替えたり、削除したりするコードを覚えるのではなくブックやシートオブジェクトを見ながら、実際にシートを操ってみたいと思います。

学習内容

  • シートオブジェクトの切り替えとシートへの値の代入

この学習で使用するエクセルファイルはここからダウンロードできます。

  


準備

 前回同様、まず最初に下記図のように、Excel上にシートを3個ほど作成し、ブックとシートのオブジェクトを設定できるようにコードを書いていきます。(ブレークポイントの設定方法は、コード左にある灰色の所をクリックすれば設定できます。)

サンプルコード

 ブックとシートオブジェクトを確認するのと、各シートへ値を代入するためのサンプルコードです。

Sub main()
    Dim objWorkbook As Workbook
    Dim objWorksheet As Worksheet
    Dim i As Integer
    
    Set objWorkbook = Application.ActiveWorkbook
   
    For i = 1 To 3
        Set objWorksheet = objWorkbook.Worksheets(i)
        Debug.Print "wait"
        
        objWorksheet.Cells(1, 1) = "テスト-" & i
        Debug.Print "wait"
    Next i
End Sub

コードの解説

‘エクセルブックが入る変数を用意しています。
Dim objWorkbook As Workbook

‘エクセルシートが入る変数を用意しています。
Dim objWorksheet As Worksheet

‘アクティブなブック(今触っているブック)を作成した変数に設定しています。
Set objWorkbook = Application.ActiveWorkbook

‘エクセルブックにあるi番目のシートを変数に設定しています。iにはfor文で繰り返された数値が入ってきます。
Set objWorksheet = objWorkbook.Worksheets(i)

‘設定したシートオブジェクトの1行,1列目(A1)に値を代入しています。
objWorksheet.Cells(1, 1) = “テスト-” & i

‘ブレークポイント用の記述です。
Debug.Print “wait”

  


ブックとシートオブジェクトの見方

 準備ができたら実行してみましょう。
 実行すると、この様にブレークポイントで一旦止まり、設定した変数にシートのオブジェクトが入っているのが分かります。

  


シートへの値の書き込み

 オブジェクトの確認が終わったら、ブレークポイントで止まっている状態から再度動かしてみましょう。
 次のブレークポイントで止まったら、エクセルの[Sheet1]を選択しコードに記載した[テスト-1]が書き込まれているかを確認します。
 下記図のように値が書き込まれていたら、「作成した変数に正常に[Sheet1]のオブジェクトが入り、そのオブジェクトに対して値を操作出来た」という事になります。

  

 続けてFor文の繰り返しが終わるまで実行してみてください。
 [Sheet1]に続き[Sheet2]のオブジェクトが変数に入り、[Sheet2]に[テスト-2]という文字が記載されるのが確認できると思います。同様に最後まで実施すれば[Sheet3]も同じように値が書き込まれているはずです。

  


 一般的にマクロの記録などで同様なことを実施すると、おそらく、シートを選択して切り替え、そのシートをアクティブにして書き込むというような処理が記録されると思います。(こんな感じで)
・Worksheets(1).Select
・Worksheets(“Sheet1”).Activate

 もちろんこの様にしてシートを切り替えた後に、値を代入していく事も可能ですが、より多くのシートを扱う場合、可読性が落ちる原因となってきます。
 それよりはシートオブジェクト作成して操作を行う方が、よりスマートに処理を行うことが出来ます。

  


最後に

 実際にシートオブジェクトを触ってみてどうでしたでしょうか?
 まだ、このぐらいの作業ですと、わざわざオブジェクトを操作しなくても出来てしまう所ではありますので、少し難しく感じたり面倒に見える所もあるかと思います。


 しかし、オブジェクトを操作している感覚というのは、一つ上のプログラミングをするにはとても重要な技術となってきますので、ただ単にコードをコピーするのではなく、ブレークポイントを適時設定しながら、変数にどのような値が入っているのかを確認しつつ、オブジェクトを操作している感覚を身に着けていきましょう。

 次回はオブジェクトを使って他のブックのシートを操作してみたいと思います。

  

前回-関連記事

このページで学習出来る事  VBAトレーニング最初となる今回は、Excelシートの使い方について説明をしていきたいと思います。  ただ単純にシートを切り替えたり、削除したりするコードを覚えるのではなくブックやシートオブジェクトを見[…]

次回-関連記事

このページで学習出来る事  VBAトレーニング3回目となる今回は、前回に引き続きExcelブックとシートの使い方について説明をしていきたいと思います。  ただ単純にシートを切り替えたり、削除したりするコードを覚えるのではなくブック[…]