お世話になっております。
最近仕事でマクロを使用するようになり、今まで経験がないので入門書やサイトで勉強しているのですが、何度読み直しても以下の2つの違いがわからない状態です。
1.Dim WS As Worksheet
2.Dim WS As Worksheets
コレクションオブジェクト、単体オブジェクトというものらしいのですが、
定義する際の違いがわからず、片方がダメならもう片方を使おう、、、という感じで記載しています。
それぞれの違いと、1では何が出来て、何ができない。2では何が出来て、何ができない、というようにできれば詳細を教えていただきたいです。
基本的なこととは理解しておりますが、何卒宜しくお願い致します。
No.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
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 【前回の続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/16 16:44
- Visual Basic(VBA) 【ご教示ください】VBAの記述方法がわかりません。 2 2022/08/12 21:28
- Visual Basic(VBA) QRコード作成マクロについて 3 2022/11/26 16:55
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
- Visual Basic(VBA) エクセルのマクロについて教えてください。 3 2023/02/17 11:59
- Visual Basic(VBA) エラーコード1004 6 2022/06/09 14:12
- Visual Basic(VBA) エクセルのマクロについて教えてください。 3 2023/02/22 08:53
- Visual Basic(VBA) VBA 参照先で選んだファイルをコピーし、出力先に別名で保存したい 8 2022/05/13 20:37
- Excel(エクセル) 【マクロ】スクショ印刷がうまく動かない件 5 2022/12/06 17:37
- Visual Basic(VBA) VBA別シートの最終行の次行へ転記したい。 3 2022/06/01 17:54
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
worksheetFunctionクラスのVloo...
-
「Columns("A:C")」の列文字を...
-
textBox isNot Nothing とは
-
Excelでフィルタをかけると警告...
-
実行時エラー 3265「要求された...
-
AccessVBAで「dim dbs as datab...
-
VBAで既に開いている別アプリケ...
-
テキストボックス中の文字列の...
-
VB6 エクセルに画像貼り付け
-
EXCEL VBA COLLECTIONオブジェ...
-
VBScriptからDLL参照設定したい
-
python __del__()に関して
-
InternetExplorer.Application...
-
上下の位置揃えについて
-
UserForm1.Showでエラーになり...
-
エクセルのVBAの標準モジュール...
-
ActiveXコントロールを用いたマ...
-
AccessVBA NULLについて
-
VBで引数にDictionaryオブジェ...
-
Excel VBAでWordの複数ファイル...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
worksheetFunctionクラスのVloo...
-
「Columns("A:C")」の列文字を...
-
実行時エラー 3265「要求された...
-
エクセルのVBAの標準モジュール...
-
VBAで既に開いている別アプリケ...
-
VBAで Set wb = Sheets(1).Cop...
-
テキストボックス中の文字列の...
-
PowerPointVBAでスライドマスタ...
-
エクセルマクロエラー「'Cells'...
-
VBAからPDFファイルにパスワー...
-
Excelでフィルタをかけると警告...
-
オブジェクトが見つかりません
-
ある文字列が全て数字であるか...
-
EXCEL VBA オートシェイプナン...
-
[VBA]CDOメッセージ送信エラー
-
VBAで作成するメール(開封確認...
-
VBAについてです。 初心者です...
-
VBA:オートシェイプの線の長...
-
VBで引数にDictionaryオブジェ...
-
AccessVBAで「dim dbs as datab...
おすすめ情報