見出し画像

アラフィフからのプログラミング!デジタルの海にダイブした私のリアルな体験#2

本当に私のExcelも自動で動くのか?

 さて、私は2020年末に「ノンプログラマーのGAFA部長が教えるExcelマクロ入門 4時間のエクセル仕事は20秒で終わる」を参考書籍と決めて、マクロ(VBA)の学習を始めました。この時点ではまだマクロとかVBAとかプログラミングというのが何なのか?よく分かっていませんでしたが、「面倒くさくてイやな作業がワンクリックで終わる」の言葉だけを頼りにしていました。


初めて見た(意識した)xlsm形式

 エクセルにはいくつかのファイル形式があるということ、皆さんは知っていますか?ちなみに私は知りませんでした。たいていの職場で普通に使われているのはファイルの名前が「●●●●.xlsx」というものなのですが、マクロが使える(=プログラムで自動的に動く)ようになっているエクセルファイルは「●●●●.xlsm」となっているんです。ついでにアイコンもちょっと変わってます。こんなこと意識したことなかったし、存在すら知らずに何十年も生きてきてました。

ファイル形式のちがい

初めて出てくるカタカナ語にゾクゾク

 ファイルの準備ができたので、いよいよマクロを作っていく段階です。これもずっと知りませんでしたが、Excelにはマクロを作る場所、つまりプログラミングのコードを書く場所があったんですね。ちなみに、このマクロを作るためのプログラミング言語をVBA(Visual Basic for Applications)というんです。で、そのコードを書く場所がVBE(Visual Basic Editor)なのですが、そんな場所が私のExcelにもあったんですねえ。そして、実際にコードを書いていくのは、VBEの中の標準モジュールです。(単純化して説明しています)
 VBAとかVBEとかモジュールとか、カタカナが苦手すぎて世界史では赤点ばかりを取っていた私ですが、これからはこういうカッコいいカタカナ語を自分が使うんだと思うと、楽しみでゾクゾクしてきました。

プログラミングとは手順を分解して言語化すること

 「じゃあ、VBEにコードを書いてExcelをどんどん自動化していこう!」というわけにはいきません。なぜなら手順を分解する必要があるからです。私たちはExcelを手で動かしているとき、いちいち操作の手順を意識してはいないですよね。

  1. Cトライブの個人名フォルダの中にある●●●●という名前のファイルをダブルクリックして開く

  2. ファイルが開いたら「集計」という名前のシートを開く

  3. ダウンロードフォルダに入っているエクセルファイルを開く

  4. ③のファイルが開いたら、左から2枚目のシートを開く

  5. ④で開いたシートのC1セルからD20セルまでの範囲を選択

  6. 選択したらコピー

  7. ②のファイルに戻ってA列のセルを探して空になっているところを選択

  8. 選択したセルにペースト…

みたいなことはいちいち考えません。でも、マクロで自動的に動かすというのは、この人間が(慣れていれば)ほぼ無意識にやっている手順を分解して順番にひとつずつコンピュータが理解できる言葉(プログラミング言語のVBA)に翻訳して書き出し、機械にその指示通りに実行してもらうということなのです。

マウスを使わずにシートの選択、セルの選択!

 ということで、さっそく本に書いてある通りに書いてみます。
開いているエクセルファイルの中の「練習」という名前のシートを選択するマクロです。

Sub シート選択()

    Sheets("練習").Select

End Sub

こんなたった一行のコードですが、これを実行するとシートがたくさんあって「練習」という名前のついたシートのタブが見切れてしまっていても、ちゃんとこのシートを選択してくれました。おー!


本当に自動で動いた!感動!

 では、このシートのE3セルを選択するコードを追加します。

Sub シート選択()

    Sheets("練習").Select
    Range("E3").Select

End Sub

「Sheet1」というシートが選択されている状態でこれを実行すると、「練習」シートのE3セルが選択されています。なんかすごい!

マウスもキーボードも使わずにセルの入力、セルの内容をクリア

 マクロはもちろんセルの選択だけではなく、入力や入力内容のクリアもできます。E3セルに「あいうえお」と入力するには

Sub シート選択()

    Sheets("練習").Select
    Range("E3").Value = "あいうえお"

End Sub

これで入力されますし、入力されている内容をクリアしたい場合は

Sub シート選択()

    Sheets("練習").Select
    Range("E3").ClearContents

End Sub

とすると、すでに入力されているセルの内容が消去されます。

 これだけでもう感動モノでした。もちろん、シートを選択してセルを選択し、「あいうえお」と入力してそれを消す、だけならコードにしなくてもいいのですが、これを1万回繰り返しなさいと言われたら…?

 もちろんシート選択と入力とクリアの繰り返しなんて、実際の仕事ではしません。でも、あらためて周りの人たちが普段どのような仕事をしているかをよく観察し抽象化してみると…。端的に言えば、私がいた職場では先輩も後輩も、ほとんどの人がやっていることがこれだということが分かってしまいました。もっとも、こう思ったのはかなり後になってからです。

この記事が気に入ったらサポートをしてみませんか?