• ベストアンサー

どちらを使った方がいいでしょうか?

Sub test1() Dim ws As Worksheet For Each ws In Worksheets Debug.Print ws.Name Next End Sub Sub test2() Dim ws As Variant For Each ws In Worksheets Debug.Print ws.Name Next End Sub どちらも問題なく実行されますが、 VBA的にどちらを使った方がいいでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
回答No.3

こんにちは。 メソッド「test1」をご使用されることを強くオススメ致します。その理由は以下です。 (1)Variant型だとレスポンスが悪くなる。 (2)Variant型だとメモリを無駄に使用する。 (3)Variant型は予期せぬエラーの温床になる。 (3)Variant型で記述されたソースは変数内部に格納しているデータを特定しずらいため、ソースの修正や変更など保守作業の効率が悪くなる。又、予期せぬエラーを防ぐため、テスト件数が必然的に増え、その分開発効率が悪くなる。 以下のサイトで、Variant型を使用した場合と使用しなかった場合のレスポンス測定結果が紹介されています。 http://officetanaka.net/excel/vba/speed/s6.htm

nhbghnbg333
質問者

お礼

Variantを使うのはいいことがなにもなさそうですね。ありがとうございました。

その他の回答 (2)

回答No.2

一般論ですが、 VBでは、Variant型は極力使用しません。 ご質問の文では、型が判明していますので、test1を使用するべきです。 Variant型を使用するのは、プログラムの途中でいろいろな型の値が 設定され、特定の型を使用できない場合などです。 よろしくお願いします。

nhbghnbg333
質問者

お礼

Variant型はなるべく使わないようにします。 ありがとうございました。

  • TAKA_R
  • ベストアンサー率32% (26/79)
回答No.1

素人です。 worksheetの方が、使うメモリ?が少なそうです。 その分、速いのかなと勝手に思っています。 エラーも分かりやすくなるし。

nhbghnbg333
質問者

お礼

worksheetを使った方がいいですね。 ありがとうございました。

関連するQ&A

専門家に質問してみよう