読者です 読者をやめる 読者になる 読者になる

Mokosoft開発者ブログ

こんなブログ読んでも時間の無駄ですよ

プログラミングを勉強したい人におすすめ!Excelプログラミング勉強法の真骨頂。

http://www.flickr.com/photos/21327995@N05/2938350888

前回の記事

プログラムの初歩の勉強は、Excelでやっちゃうってのはどうでしょう。Winユーザー向けプログラム勉強方法 - Mokosoft開発者ブログ

に引き続きまして、Excelプログラミング勉強法の紹介です。

どんどんアプリからは遠のいてる感じもしますが、気にしません。

 

本記事では前回の記事で紹介できなかった機能を紹介したいと思います。

 実は簡単なアプリケーションも作れる

簡単なというと語弊がありますが、Windows上で動くソフトウェアとかどうやって作ってるんだろー、と思うこともあると思います。

そういったものもExcelで作ることもできるんです。

※配布する場合は、配布先でもExcelがインストールされてる必要があります。

 

f:id:mad_ochi:20140110114220p:plain

 まず、おそらくOffice2010以降ですが、開発用のメニューはデフォルトでは隠されているので、表示させる必要があります。

リボンを右クリックして、「リボンのユーザー設定」を選択します。

 

f:id:mad_ochi:20140110114416p:plain

 「開発」という部分のチェックが消えているので、チェックをつけて「OK」を押します。

 

f:id:mad_ochi:20140110114524p:plain

 するとリボンの中に「開発」というタブが新たに増えます。

この開発タブを開き、「挿入」というボタンを押すと、「フォームコントロール」というものが開きます。

これの一番左上の「ボタン」を選択しましょう。

 

f:id:mad_ochi:20140110114708p:plain

その状態で、シート上でマウスのドラッグ&ドロップを行うと、ボタンが現れました!

 

f:id:mad_ochi:20140110114813p:plain

このへんで、Excelファイルを保存しておきたいのですが、これはOffice2013からの仕様なのか、「別の名前でファイルを保存」として、ファイルタイプを「Excel マクロ有効ブック」として保存してあげないと、プログラムを動かすことができないようです。

これで保存をしておきます。

 

f:id:mad_ochi:20140110114939p:plain

さらに、セキュリティ設定も機能しているため、「開発」タブの「マクロのセキュリティ」ボタンを押し、

 

f:id:mad_ochi:20140110115013p:plain

すべてのマクロを有効にする、にチェックをつけましょう。

※常にこの設定の状態だと、インターネットからダウンロードしたExcelファイルで被害を被ることも考えられるため、作業後は元の設定に戻しておきましょう。

 

これで、プログラムが実行できる準備が整いました。

f:id:mad_ochi:20140110115319p:plain

ボタンを右クリックして「マクロの登録」として、

 

f:id:mad_ochi:20140110115339p:plain

マクロの登録ウィンドウが表示されるので、「新規作成」を選択します。

 

f:id:mad_ochi:20140110115408p:plain

Visual Basic Editorが開き、 ボタン1_Clickというサブルーチンが生成されました。

 

このボタンが押されると、このサブルーチンに書かれている処理が実行されるわけです。

メッセージボックスが表示される処理を書いてみます。

 

その後、保存してボタンをクリックしてみると。

f:id:mad_ochi:20140110115544p:plain

メッセージが表示されました。

 

ウィンドウも作れるよ

これじゃアプリケーションと呼ぶには味気ないので、よく見るウィンドウを作ってみましょう。

f:id:mad_ochi:20140110120531p:plain

VisualBasicEditorより、プロジェクトツリーで右クリックをして「挿入」→「ユーザーフォーム」とします。

 

f:id:mad_ochi:20140110120612p:plain

なんか出てきた。

これもツールボックスからコントロールを引っ張ってきて、画面を作ることができます。

 

f:id:mad_ochi:20140110120639p:plain

 

それっぽい画面を作ってみましょう。

画面をダブルクリックするとか、F7を押せばコード画面へ移動できます。

 

f:id:mad_ochi:20140110121436p:plain

 

こんな感じにしてます。

UserForm_Activateというサブルーチンを作っていますが、これはこのフォームが表示されたときに、処理が行われるイベントプロシージャというものです。

これはVBAによって予め用意されているものになります。

ここでは画面に配置した、ListBoxに値を追加していっています。

 

フォーム画面内のボタンをダブルクリックすると、自動的に CommandButton1_Clickというものが生成されます。

これは先ほどと同様に、ボタンをクリックした時の処理を記述します。

ここでは、リストボックスの選択された値を抽出して、メッセージとして出力するようにしています。

 

f:id:mad_ochi:20140110122146p:plain

最後に、シートに貼り付けたボタンを押した時の処理で、作成したフォームを表示する処理に差し替えます。

 

さて、それではシートに貼り付けたボタンをクリックしてみましょう。

f:id:mad_ochi:20140110122309p:plain

フォームが開きました!

リストボックスの値を選択してボタンを押してみると、

 

f:id:mad_ochi:20140110122359p:plain

 

メッセージが表示されました。

この機能が使えることで、よりアプリケーションらしくなってくる予感がしますね。

 

分からないところはExcelに聞け

さて、Excelプログラミングで、例えばセルに表示されているテキストの色を変更するにはどうすればよいのでしょうか。

いちいちぐぐって調べないといけない、見つかるかわからないしめんどくさい。

そう思う必要はありません。

 

便利な「マクロの記録」機能を利用しましょう。

f:id:mad_ochi:20140110123101p:plain

開発タブから「マクロの記録」ボタンを選択します。

 

f:id:mad_ochi:20140110123303p:plain

マクロ名がデフォルトで表示されているので、OKを選択しましょう。

 

f:id:mad_ochi:20140110123331p:plain

テキスト色を変えたい箇所を範囲選択します。

 

f:id:mad_ochi:20140110123356p:plain

文字色を変更してみましょう。

 

f:id:mad_ochi:20140110123415p:plain

「マクロの記録」ボタンが「記録終了」ボタンになっているので、これを押しましょう。

 

そしてALT+F11でコードウィンドウを表示してみると。

f:id:mad_ochi:20140110123452p:plain

今行った処理が、プログラムに書き起こされているではないですか!

 

Rangeというのは範囲を指定するもので、C2かC11までのセルを指定し、Selectで範囲選択したことと同じ効果を及ぼします。

Selectionというものは、今画面上で範囲選択されているものすべて、に対して処理を行うときに使います。

これのFont.Color に値を代入してあげることで、色の変更が行えるということがわかりました。

 

このマクロの記録機能を使えば、こういう作業はどうやってプログラムで書けばいいんだろう、と思うものを簡単に明確にすることが可能です。

あとはこれを自作のプログラムに織り込んでいけば自分の作りたい処理が作れるという寸法なのです。

 

 

まさにプログラミングを勉強したいと思っている人にはうってつけだと思います。

これで、プログラミングに興味が持てれば、他の言語や開発環境に移っていくのも良いのではないでしょうか。

 

 

 

ちなみに。

HTML+JavaScriptでも開発環境なしでプログラミングの勉強ができるじゃないかという意見もありますが、これは真っ先に思いついていました。

ただ、Windowのデフォルトエディタのメモ帳が非常にプログラミングに向かない。

じゃあエディタはどれがいい、あれがいいとか言い出すとやはりわからない人にはわからないんじゃないかと思い、あえてJavaScriptでの勉強は敷居が高いものだという判断をしています。