2017-06-16 5 views

答えて

3

Excel.Windows()あなたの書き込みは[1]ですが、Application.Windows()はドキュメントに従って読み取り専用です[2]。 [1],[2]

Applicationバージョンの読み取り専用の区別以外は同じです。したがって、プロパティを読み取っているだけの場合はアプリケーションバージョンを使用し、何かを変更する必要がある場合はExcelバージョンを使用してください。

+0

@Jeeped私はそう信じていますか?私は正直なところ100%確信していないし、かなり率直であるために、それは本当にそれほど重要ではないと思う。 VBAは混乱の種であり、私は仕事を達成するのに必要な最低限の金額を書こうとします。背景は主にサーバーサイドのWebにありますが、夏にはVBAをやり続けます。 –

+0

@AdamLeBlanc:あなたの2人の間でジャンプして申し訳ありませんが、なぜあなたはVBAが混乱していると思いますか? –

+0

@SiddharthRoutそれは他の言語が私が慣れ親しんだ多くの機能を欠いているだけでなく、他のほとんどの言語とは非常に異なることをしています。私は、Microsoftがアプリケーションスクリプトを行うためにC#や他の.NET言語のいずれかを使用するほうが良いと感じています。それらの言語はもっと標準的な方法で動作するからです。 Visual Basicには、プログラマー以外の人にとって使いやすいものがたくさんあります。これは、開発者にとっては少し面倒です。 –

3

Excelライブラリには、WindowsおよびApplicationという名前のクラスがあります。次にExcel.WindowsはクラスWindowsの完全修飾名です。クラスApplicationプロパティWindowsという名前で、すべてのワークブック内のウィンドウのコレクションを返します。

ですから、クラスWindowsを参照したいときは、Excel.Windowsを使用することができますし、ウィンドウオブジェクトを参照したいときは、Application.Windowsプロパティを使用します。 HTH。

オブジェクトブラウザでは、我々はそれを見ることができます。 enter image description here


命名に問題があります。クラスWindowsとプロパティWindowsの名前は同じです。最も一般的なオブジェクトを返すプロパティとメソッドの多くが使用することができるので、

Dim eaw As Excel.Windows 
Dim aw As Excel.Windows 
Dim ew As Excel.Windows 

Set eaw = Excel.Application.Windows 
Set aw = Application.Windows 
Set ew = Excel.Windows 

Set aw = Application.WindowsSet ew = Excel.Windowsが同じコード:すべて次のコード例はWindowsプロパティを使用して、ウィンドウオブジェクトの同じコレクションを参照してください。 Applicationオブジェクト修飾子なし。 Applicationオブジェクト修飾子なしで使用できるプロパティとメソッドは、globalとみなされ、Windowsの場合も同様です。要約すると

あなたは、例えば、完全修飾名を取るときは、どんな間違いをすることはありません Excel.Windows型の変数を宣言 Dim wnds As Excel.Windows
  • ウィンドウのコレクションを参照することはあなたが選択した道はあなた次第であるオブジェクトは、以下のすべてのSet ew = Excel.Windowsは(同じコレクションを返す)Set eaw = Excel.Application.WindowsSet aw = Application.Windows、等価です。 注:私のExcel 2007のオブジェクトブラウザによると、このコレクションはread-onlyです。

  • 関連する問題