2011年4月11日月曜日

Excel の ThisWorkbook について補足

LibreOffice Calc には Excel のThisWorkbook に相当するオブジェクトとして
ThisComponent オブジェクトがある。
  
話しが脱線してExcel の話題になってしまうが、
  
ThisWorkbook と ActiveWorkbook
  
の違いについて記す(自分の為にも)。知識は厳密である方が望ましいので。
  
二つのブック Book1.xls と Book2.xls を用意し、Book1.xls に下記プロシージャ
を記述する :
  
Sub Test1()
MsgBox "ThisWorkbookの名前は : " & ThisWorkbook.Name & vbCrLf & _

                      "ActiveWorkbookの名前は : " & ActiveWorkbook.Name
End Sub
  
Book1.xls を選択(アクティブ)して状態で Test1 プロシージャを実行すると
結果は、
  
  
これに対して、Book2.xls を選択した状態で Test1 プロシージャを実行
すると、メッセージボックスに表示される内容が下記の通り、微妙に
異なる :
  
  
ThisWorkbook については、どちらのブックがアクティブかに関わらず
Name プロパティは「Book1」を返すが、ActiveWorkbook については
選択されているブックによって Name プロパティの値は変わってくる。
以上のことからわかるように、ThisWorkbook と ActiveWorkbook の
違いは下記の通りである :
  
ThisWorkbook : 実行しているプロシージャが記述されているブック
  
ActiveWorkbook : 実行されているプロシージャがどのブックに記述
                        されているかに関わらず、アクティブ(選択されて
                        いる)なブック
  
以上の記述は下記資料を参考にさせて頂いた :

EXCEL-LENCE web

0 件のコメント:

コメントを投稿