« WebクエリでGoogleの検索結果を取得する | トップページ | SheetsとWorksheets »

2012年9月23日 (日)

あるあるエラー:シートをオブジェクト変数に入れる

シートをオブジェクト変数に入れようとしたら
このようなエラーになったことはありませんか?
Vba20111023a

このエラーが発生したコードは次です。

Dim sh As Worksheets
Set sh = Sheets("Sheet1")

オブジェクト変数shのデータ型が
このエラーの原因です。
といっても???
と思う人もいるかもしれません。

エラーにならないコードはこちら

Dim sh As Worksheet
Set sh = Sheets("Sheet1")

同じではありません。
WorksheetsとWorksheet、
「s」のありなしです。

Worksheetsは、プロパティで
Worksheetは、オブジェクトです。
調べてみるとすっきりします。

コードを入力していると
次の画像のように入力補助されます。
Vba20111023b

マークも同じなので
両者の違いがはっきりしないので
混同してしまうのかもしれません。
プロパティはデータ型には使えません。

補足として
次のコードでもエラーになります。

Dim sh As Sheets
Set sh = Sheets("Sheet1")

Sheetsもプロパティです。
「Sheet」というオブジェクトはないので、

Dim sh As Sheet
Set sh = Sheets("Sheet1")

のようにすると
次のようなコンパイルエラーになります。

ユーザ定義型は定義されていません。

文字的にはsの違いしかないですから
わかりにくいですよね。

|

« WebクエリでGoogleの検索結果を取得する | トップページ | SheetsとWorksheets »

コメント

この記事へのコメントは終了しました。

トラックバック


この記事へのトラックバック一覧です: あるあるエラー:シートをオブジェクト変数に入れる:

« WebクエリでGoogleの検索結果を取得する | トップページ | SheetsとWorksheets »