VBA開発

WorkSheetオブジェクトからブックを閉じる(Parentプロパティ)

省略したワークシートオブジェクトを使用する事で、コードが見やすくなり、
自身のVBAの理解度が増したと考えます。

WorkSheetオブジェクトのようなオブジェクト変数は、
通常の変数とは違い、優位な部分があります。

通常の変数とObject変数の違い

省略したWorkSheetオブジェクトを使用していく場合、次に出てくる問題が、
下記のようなWorkSheetの概念と異なる部分も操作可能です。

  • ワークブックを保存して閉じる
  • ワークブックを保存せず閉じる
  • ワークブックの途中経過としてブック保存する

コードサンプル

Public Sub test()
    Dim ws As Worksheet
    Set ws = ActiveWorkbook.ActiveSheet
    
    '■ワークシートオブジェクトから、Parent.Nameでブック名を取得(保存せず終了)
    ws.Parent.Close SaveChanges:=False
    
    Dim rng As Range
    Set rng = ActiveWorkbook.ActiveSheet.Range("A1:A10")
    
    '■レンジオブジェクトから、Parent.Parent.Nameでブック名を取得(保存して終了)
    rng.Parent.Parent.Close SaveChanges:=True
        
End Sub
■Parntプロパティで親階層を取得可能
・Parentを使用する事で、現Objectの親階層を参照可能です。
・Parent.Parentを使用する事で、現Objectの親階層の親階層を参照可能です。
■階層(親子関係)のイメージ
Application
└ Wokbook
└ Worksheet
└ Range
上記概念を理解する事でオブジェクトを理解できたのではないでしょうか。
変数はエクセルのセル、定数はエクセルのセル(保護状態)と例えていますが、
オブジェクトは単なる変数のような値の情報以外の多くの情報を持っています。
(Value以外に、Range、Address、Name、WorkSheet、Workbook、Application等)

関連記事

マクロ初級者必読-ワークシート名を変数にSetし、短い名前で利用する

マクロ初級者必読-ワークブック名を変数にSetし、短い名前で利用する
→単純にブックを閉じるだけなら、WorkSheetObjectから閉じればいいですね。変数を増やさなくて済みます。

 

 

コメント

タイトルとURLをコピーしました