〇〇感想ブログ

もろもろの感想をまったり綴るブログ。育児のことなども。ゆるーく更新していきます♪

【スポンサーリンク】

マクロへの道②

こんにちは。

マクロを勉強し始めてから早2週間。
2週間かけて、やっと完成したマクロがこれ。

「ボタンを押すと、指定した行の内容が別のシートの所定の場所にコピペされますよ」

というもの。

 

この、どう見ても手でやったら3秒くらいでできそうなマクロを作成するのに、2週間かかりました。

軽く絶望・・・。

というのも、マクロはやっぱりものすごく難しい!

f:id:strbcs:20200419221127j:image

 

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週間かけたわけですからね。
先が思いやられます。

 

さて、次はどんなショボマクロにチャレンジするのでしょうか!
乞うご期待・・・!?

 

ブログランキング・にほんブログ村へ