プロが教える店舗&オフィスのセキュリティ対策術

お世話になっております。

最近仕事でマクロを使用するようになり、今まで経験がないので入門書やサイトで勉強しているのですが、何度読み直しても以下の2つの違いがわからない状態です。

1.Dim WS As Worksheet
2.Dim WS As Worksheets

コレクションオブジェクト、単体オブジェクトというものらしいのですが、
定義する際の違いがわからず、片方がダメならもう片方を使おう、、、という感じで記載しています。

それぞれの違いと、1では何が出来て、何ができない。2では何が出来て、何ができない、というようにできれば詳細を教えていただきたいです。

基本的なこととは理解しておりますが、何卒宜しくお願い致します。

A 回答 (1件)

こんにちは。



>コレクションオブジェクト、
>単体オブジェクト

最初から、そんな違いがわかるようなら、天才です。
単体オブジェクトとコレクションの違いなどは、VBAを真面目に1年勉強しても、分からないです。

結論からいうと、
Dim WS As Worksheets なんていう、変数宣言というのは、出来ても、そんな宣言はしないです。使いようがありません。

Dim ws As Worksheet だけで十分です。

Set ws = Worksheets("Sheet1")

Set ws = Worksheets(1)
'**これらは、みな、Worksheet 単体です。**
はあっても、Worksheets 自体は取り扱いはしないからです。

>何度読み直しても以下の2つの違いがわからない

私は、最初にアスキーの本で学んだ時に、こうした問題が出てきて、さっぱり分かりませんでした。1年経っても分からないので、やがて、入門者にとって、その本が悪いということに気が付きました。やや抽象的な言い方になるのですが、ExcelのVBAは、VBAとして内部で調和していると思い込んでいたのです。それが、根本的な間違いなのです。もちろん、今のご質問者さんの指摘しているような所ではありませんが。

>それぞれの違いと、1では何が出来て、何ができない。2では何が出来て、何ができない、というようにできれば詳細を教えていただきたいです。

冗談でも、私は、そんなことはできません。なぜなら、ふたつは、比べるものでも、並べるものでもないからです。

>片方がダメならもう片方を使おう、、、という感じで記載しています。

Worksheets かWorksheet のような場合は、どちらか一つではなく、ひとつしかありません。もちろん、例外あるけれども、入門時でそれをしたらダメです。言い換えれば、ひとつだけにして覚えるのです。そうすれば、自ずと他も見えてきます。

>基本的なこととは理解しておりますが

とおっしゃっていますが、学び方のプロセスというのかな、そこから学ばないといけないかもしれませんね。
各々の定義を理解してから、VBAを組み立てようとしてはダメです。
他人の作ったものや、テキストをみて、真似をしながら、ちょっと変えて試してみることです。
「オブジェクト」というものは、シートとかブックのことを指しているのか、とわかるようになれば、十分です。

だいたい、500コードを自分の手で書いて、実際にRun(実行)をしてみたら、なんとなくわかってくるはずです。
理屈で覚えようとしてもダメです。"Don't think, Feel" (「考えるな、感じるんだ」ブルースリー・『燃えよドラゴン』より)ということです。スポーツと同じで、とにかく数をこなすことです。

なお、私は、この本に出会わなかったら、VBAは習得しませんでした。
『かんたんプログラミング Excel 2010 VBA 基礎編』 大村 あつし (著)  (全3冊)
http://amazon.co.jp/dp/4774148695
    • good
    • 0
この回答へのお礼

お世話になっております。
ご親切に説明ありがとうございます。
また、紹介いただいた参考書も購入してみようと思います。

お礼日時:2015/06/21 18:31

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!