2012
9
06

これからExcelのマクロを始めたいという方に!簡単な練習問題作りました。

何気なくアクセス解析を眺めていたら、“マクロ 勉強のコツ”というキーワードで検索してくださった方がいらっしゃいました。そういえば私は、一番最初はどんなふうにして覚えたんだっけか…と、当時出された問題を思い出しながら作ってみました。


下準備

120906-1

それではまず、このようなプログラムの箱を用意します。こちらの記事を参考にして、ボタンを押すとプログラムが起動するように設定してください。

問1.A1セルに1,A2セルに2…の要領で、A5セルまで埋めなさい

120906-2

このようになれば正解です。いろいろな方法があります。

解1

ひとつずつセルと数値を指定して入れる方法です。プログラムが1行動くごとにセルに数値が入っていく様子を、ステップ実行しながら見てみると勉強になります。

解2

解1より、ちょっとプログラム的な解答です。これなら、100だろうと1000だろうと簡単にセルを埋められます。

変数を使っていること、RangeCellで指定していること、繰り返し処理を使っていることで、解1よりも難しそうに見えますが、これらをマスターすることで幅がぐっと広がりますので、下記の記事を参考に、是非ひとつずつ、ゆっくり挑戦してみてください。

解3

繰り返し処理をFor~Nextではなく、Do~Loopで行ってみたものです。今回のような数字がきっちり決まっている問題ならば、解2のほうがコードが少なくて済みますが、数値に依存しない問題ではDo~Loopを使って繰り返す方が良い場合もあります。

問2.A1セル~A5セルのクリアボタンを作りなさい

120906-3

もうひとつボタンをつくって、それを押すとA1~A5のセルがクリアされるボタンを作ります。いちいち次のプログラムを起動させる前に手で消すの、面倒ですもんね(´ω`)

あ、これは、Sub test~End Subとは違うものなので、今まで書いてきたコードの、End Subの下に書いてくださいね!

解1

範囲を指定して、クリア。覚えてしまえばそんなに難しくないですね。

解2

ちなみにこのように書くと、書式設定を残してクリアすることができます。キーボードでDelete押すのと同じ感じです。先程の.Clearだけだと、色の設定や罫線まで全て消えてしまうので、注意しましょう。

120906-4

忘れずに、ボタンから起動するようにしておきましょう。いかがでしょう、消えましたか?クリアボタン、起動ボタン、交互に押して動作を確かめてみてください!

問3.入力された数値より大きいものを赤くしなさい

まずはA1~A5セルにランダムに数値を入れておいてください。

120906-5

解1

変数がふたつになりました。nが入力された数値を格納する変数で、iがセルの位置をひとつずつループさせる変数です。セルの値をひとつずつずらしながらnより大きいか確認して、大きければ色を変えています。

上記ではColorIndexで1=黒、2=白、3=赤…のように、あらかじめ数値に色が割り振られているものを利用していますが、RGBで指定することもできます。

120906-6

InputBoxに10を入力してみると、こんな感じになりました。いろんな数値で試してみてください!

クリアボタンの改造

今のままのクリアボタンだと、いろいろ試したいのにいちいち消えてしまいますよね。フォントの色だけ自動に戻すようにしてみましょう。

これでフォントの色が戻ります。InputBoxに入れる数値を変えてみて、色々試してみてくださいー。

自分の作りたいものをプログラミングするには

いかがでしょうか、ここまでなんとなくでもわかってきたら、基本はだいたいOKです。自分の作りたいものをイメージしてみてください。それは、どんなものでしょう?

イメージを細分化

全て箇条書きで紙に書き出すのが効果的です。

  1. ○○というファイルを××という名前でコピー
  2. ××というファイルを開く
  3. E1セルに今日の日付を入れる
  4. A1~A31セルに今月の日付を入れる
  5. B1~B31セルに今月の曜日を入れる
  6. B1~B31セルが日曜日ならフォントを赤に
  7. ・・・

検索→コピペの繰り返し

「ExcelVBA ファイル コピー」で検索してみましょう。たくさんやり方が載っているはずです。次は、「ExcelVBA ファイル 開く」です。連続した日付を入れるなら、さっきやったFor~Nextでできそうですよね?曜日の判定はIf~End Ifですね。

こんな感じで、細分化した目的をひとつずつ検索すれば、それに適したコード(スニペットと言います)が必ず見つかりますので、それをコピーして繋げていきます。検索スキルというものも必要ですが、できるだけ汎用的な単語をスペースで区切って検索するのがコツです。

「マクロの記録」を使って、やりたい動きをコード化するのも有効です。記録したコードはだいたい必要ないもの含まれてしまうので(何行スクロールしたとか、どのセルをアクティブにしたとか)、必要なところだけをコピーして組み込むのがおすすめです。

1行ずつの積み重ねでできている

プログラムの大きな塊を想像すると、「どうせ自分にはできっこない」と思ってしまいがちですが、1行1行は決して難しいものではありません。根気のいる作業ですが、自分の仕事が楽になると思えば、ちょっと楽しくなってきませんか?

エラーにビビらない!

エラーは、「ここがこういうふうに間違ってるよ」ということをきちんと教えてくれています。頭から「自分には分からない」と決め付けてしまっては前に進むことはできません。是非、読んでみて、分からなければ調べてみて、自分で解決する癖をつけていきましょう。

エラー対処方を書いてみたので、こちらも参考にして頂ければ。

最後に

プログラムは、ちょっと乱暴な言い方をすると「目的が達成できればOK」です。人それぞれ癖というものがありますし、正解は一つではありません。最初のうちから、スマートなコード、短いコードを目指さなくても、ある程度知識がついてくれば、「あ、ここはもっと短くできるな」ということが分かってくると思います。

私も、過去のコードを見て「よくもまぁこれだけの遠回りを…」と思うようなもの、いっぱいありますw そんな風に思えることができることこそが、自分が成長している証なのかもしれません。

Excelというものは、かなりの確率で仕事をするPCには入っているソフトです。それだけ、Excelのマクロは特殊な環境がいらなくて、誰でも、簡単に始められるものです。“興味を持ってるけどなかなか踏み出せない”、そんな方が一人でも多く、自分の仕事を効率化できるようになってくれたらいいなと思っています。

  • このエントリーをはてなブックマークに追加
  • follow us in feedly 618
  • RSSを登録

公開日:2012/09/06
更新日:2014/02/26


コメントを残す




*印は必須項目です。コメントは承認制ですので、反映までしばらくお待ち下さい。(稀にですがスパムの誤判定にて届かないこともあるようですので、必要な際はお問い合わせからお願い致します。)


back to top