IT 技術情報 整理サイト

ナビゲーション

Home‎ > ‎ソフトウェア開発‎ > ‎プログラミング‎ > ‎VBA‎ > ‎

Excel VBA Tips




 シートオブジェクトの指定方法

 シートの参照は、Visual Basic Editor で表示されるシートのオブジェクト名ではなく、シート名で指定する。
 オブジェクト名で指定すると、シートが存在しないとき、エラーでエクセルが落ちる。

シートオブジェクトのコピー方法

 シートのコピーで、名前の定義を含んだシートを、ブックの保存をせずに多数コピーすると、
実行時エラー '1004':
Worksheet クラスの Copy メソッドが失敗しました。
実行時エラー '1004':
アプリケーション定義またはオブジェクト定義のエラーです。
というエラーが発生する事がある。
 エラーが発生するシート数は、新規のブックの場合255シート、既存のブックの場合はシートの容量によって異なるらしい。
 対策としては、シートをコピーするのではなく、シートを新規で追加してシート上のセルの内容を Cells プロパティ を使ってコピーする方法がある。
 これは Microsoft Excel の問題らしい。

(参考:Microsoft サポートオンライン - KB210684 : Excel でプログラムを使用してワークシートをコピーするとランタイム エラー 1004 が発生するExcel でプログラムを使用してワークシートをコピーするとランタイム エラー 1004 が発生する

  Range オブジェクトの Formula プロパティ と FormulaLocal プロパティの違い

 違いは、FormulaLocal は使用地域独自の関数を使えるが、Formula は使えないという点。

 例えば半角文字を全角文字に変換する JIS( ) という日本固有の関数は、FormulaLocal では使える。
 しかし Formula では、エラーにはならないが、JIS( ) を VB関数の DBCS( ) に置き換えた文字列が表示される。

  Range オブジェクトの Address プロパティと AddressLocal プロパティの違い

 英語や日本語では、違いはない。
 ドイツ語では違いがあるというのをどこかで読んだ事があるが詳細は不明。
 いずれ調べるつもり。

  VBA による VBComponents の操作での注意

  エクセルVBAの、Thisworkbook.VBProject.VBComponents オブジェクトで、VBComponents.Add や VBComponents.Remove 、 VBComponents.Import でVBコンポーネントの追加削除を繰り返すと、エクセルファイルが肥大する事があるらしい。