マクロへの道②
こんにちは。
マクロを勉強し始めてから早2週間。
2週間かけて、やっと完成したマクロがこれ。
「ボタンを押すと、指定した行の内容が別のシートの所定の場所にコピペされますよ」
というもの。
この、どう見ても手でやったら3秒くらいでできそうなマクロを作成するのに、2週間かかりました。
軽く絶望・・・。
というのも、マクロはやっぱりものすごく難しい!
1.調べても説明がイミフ
例えば、「指定した行の」の部分。
指定されたNo.を探そうとして、グーグル先生に聞いてみます。
「Excel マクロ セルを探す」で検索。
すると、「【VBA入門】Find、FindNextで検索」という、何やらそれらしいサイトを発見。
説明を読むと・・・
「
Findメソッドは以下のように記述します。(中略)
Objectにはセル範囲のRangeオブジェクトを指定します。
データがみつかった場合は、見つかったセルのRangeオブジェクトを返します。データを含むセルが存在しない場合にはNothingを返します。
」
なんと、理解できる文章が1つもない、という奇跡!
Object? Rangeオブジェクト?返します???
説明が理解できない、というより、一体何を説明されているかも理解できない状態
2.エラーの内容がイミフ
ちょっと、下の文をみてください。
Range("A1").Copy Range("C2")
これは、A1セルの内容をC2セルにコピペしますよ、という意味です。
そして次に、下の文をみてください。
Worksheets("Sheet2").Range("C2")
これは、「『Sheet2』シートのC2セル」という意味です。
Excelファイルだと、複数シートがありますからね。
どのシートの○○セルです、と指定したいときは、こう書けばいいんですねー。
なので、上の二つを組み合わせて、
「『Sheet1』シートのA1セルの内容を、『Sheet2』シートのC2セルにコピペしたい」場合はどう書けばいいんでしょうか?
簡単ですね。こうです。
Worksheets("Sheet1").Range("A1").Copy Worksheets("Sheet2").Range("C2")
はい、カンタンカンタン。
さっそくテストしてみましょう。
はい、エラーになります。
なんでだーーーー!!!!
主人にきいたところ、「ほかのシートに貼り付けたい場合、そのシートをアクティブにしとかないとエラーになるよ」という、意味の分からない呪文を唱え始めました。
(私のMPは削られました。)
そんな、数々のイミフを乗り越え、完成したのが、冒頭に紹介したショボマクロです。
うーむ、マクロ使った方が効率的だ、といえる日は来るのでしょうか?
こんな簡単なマクロをつくるのに2週間かけたわけですからね。
先が思いやられます。
さて、次はどんなショボマクロにチャレンジするのでしょうか!
乞うご期待・・・!?