見出し画像

0から始めるPHPプログラミング #1-1 VBAで入力チェックを実装する その1

――ここは日本某所にあるP市H町P小学校。

あなたはこの度、1年生の担任を受け持つことになりました。

ランドセルを背負い緊張と期待の入り混じった面持ちで入学式を迎える新1年生の子どもたち。

4月の入学式を迎えた後は、児童たちへの授業や保護者の方とのやりとり、年間行事の準備等であなたは大忙しになります。

事務作業に割く時間はできるだけ抑えて、子どもたちと直接かかわる時間を大切にしたい、そう思っていました。それをかなえるためにはしっかりと準備をしなければなりません。


個人情報を集めよう

20XX年は疫病の流行により、関係各所の連携がうまくいかず、例年のように入学する児童、保護者に関する詳細な情報を事前に得られませんでした。

そのため、まずは各家庭にお願いをしてお子さんの名前や生年月日、保護者、住所等の情報を寄せてもらわねばなりません。


そこであなたは、入学式の日に子どもたちにプリントを渡して、親御さんの記入したものをもってきてもらおうと考えました。

しかし待ってください。

各家庭にプリントを渡して記入してもらい、それをまたお子さんに持ってきてもらうのはそれだけで手間です。

その上、情報を管理するためにいただいた情報をパソコンに打ち込んでいくのはほかでもないあなたの仕事です。集められたプリントの中には癖のある文字や記入漏れなんかもあるでしょう。

考えただけでもうんざりするような作業です。


そこであなたは考えました。各家庭のメールアドレスに入力用のファイルを送信し、そのファイルを送り返してもらうというのはどうでしょう。

これならお子さんの手を介すことなく、親御さんへお願いができます。その上、すでにコンピュータに入力した形で受領できるので、あなたが再度打ち込むという手間も省けます。

早速、保護者の方に入力していただくファイルを用意しましょう。


ファイルの送信には各家庭のメールアドレスが必要となるため、あなたは入学式の日に保護者の皆さんから教えてもらいました。


個人情報入力用のファイルをつくる

必要情報を入力できるようにエクセルでファイルを作りました。

001_個人情報記入票サンプル

それでは早速送信しましょう・・・と言いたいところですが、本当にこの内容で大丈夫でしょうか。

ただでさえ忙しい教員の仕事。とにかく時間を削減したいのです。

そのためには保護者全員に正確な入力をしていただく必要があります。正確な入力とは

・入力漏れがないこと

・正しい形式で入力されていること

・想定外の入力がないこと

などがありますね。内容に不備があると電話で問い合わせるなど、確認の手間がかかります。そんなデータがたくさんあるとやってられません。

とにかく楽をしたいのです。

ですので、事前に入力不備を可能な限り防止する方法を考えましょう。

あなたは保護者の方がファイルを送り返す前に入力内容のチェックができるといいな、と思いました。

そして検討を重ねた結果、Excelファイルに入力チェックの機能を用意する、という結論に至ります。


入力チェックを実装する ~準備編~

さて、ここからはシナリオを飛び出してプログラミングのお時間です。

早速、実装をしてみましょう。

まずはエクセルを立ち上げてください。

エクセルの立ち上げ方はいくつかあります。

・デスクトップにショートカットアイコンがあればダブルクリックする

・Windowsキー + R で小窓を出し、「excel」と打ちエンタキー押下

・Windowsキー + S で検索枠に「excel」と打ち、検索結果のエクセルアプリを選択しエンタキー押下

・Windowsキー + R で小窓を出し、「cmd」と打ちエンタキー押下、コマンドプロンプトがでるので「start excel」と打ちエンタキー押下

などですね。(いくつかはPCの設定によってはできないかも)

余談ですが、マウスを使わずにキーボードのみでアプリを立ち上げられるとかっこいいです。ちょっとできるやつ感がでます。


はい、立ち上げましたね。

002_エクセル立ち上げ

たぶん初期表示はこんな感じかと思います(バージョンによって表示内容に違いがあるかもしれませんが、問題ありません)。「空白のブック」(上図の赤枠)を選択しましょう。

003_エクセル初期画面

はい、こんな画面になりましたでしょうか。エクセルをよく使う方にとってはおなじみの画面ですね。バージョンによっては最初からこの画面だったかもしれません。

まずは先ほどチラッとお見せした個人情報入力の様式をご用意いただきたいのですが、ここで学びたいのはプログラミングですので、この作業は省略していただきます。

以下のファイルをダウンロードしてください。

ダウンロードして、開きましたら一番左上のA1セルを選択した状態でCtrl + Aキーを押下しましょう。

004_全選択前

↑この状態が、Ctrl + A を押下することで・・・

005_全選択後

↑こんな風になればOK。全体が選択されています。

全体選択はCtrl + A これ、この先も使いどころ多いので、覚えておいてください。もちろんその都度説明しますので、ご心配なく(∩´∀`)∩。

AはたぶんALLのAかな・・。

ちなみに、全選択状態でキーから指を離してもその状態は維持されますので、あまり神経質にならなくても大丈夫です。

それでは、その状態でさらにCtrl + Cキーを押下しましょう。CはCOPYのCでしょうね。

006_全選択後コピー

↑こんな感じになりましたでしょうか。わかります?枠線が少しギザギザしてるの。

ではこの状態で、すかさず先ほど新規に開いたエクセルに戻りましょう。

一番左上のA1セルが選択された状態にしてください。

007_様式貼り付け前

この状態で今度はCtrl + Vキーを押下しましょう。ペーストです。

008_様式貼り付け後

はい、きました~~!!入力様式ゲットだぜ!(ポケモン風

ここでちょっと注釈なんですけどね、9~11行目の「連絡(自由記述)」って欄、項目名が改行しちゃっててダサいじゃないですか。

そこね、エクセルの縮尺を90 %以下にするとあら不思議!治っちゃうんですね~。

009_縮尺調整

エクセル画面の右下にバーがあって、パーセンテージが表示されています。そこが縮尺率ですので、+とーで数字を調整しましょう。数字をクリックすると任意の縮尺にすることもできます。

はい、これでいきましょう。


そしてもうひとつお願いがあります。この後の作業にはなんら差しさわりないのですが、余計な罫線を消しましょう。

上部の「表示」タブを選択し、「目盛線」チェックボックスをOFFにします。

010_目盛線削除

これで綺麗な表示になりましたね。ちなみに、今の目盛線非表示をショートカットキーでやるとAlt → W → V → Gになります。私はいつもこれ。

ちょっとした処理でもマウスを使わずにショートカットを使うとできるやつ感がでます(2回目)。よく使うものは覚えておくといいですよ(∩´∀`)∩。

さて、実はまだあともうひとつだけ下準備があります。まだ役者が揃っていないんです!今からやるのはズバリ開発ですよね・・・!

なのに見て・・・!

011_タブ群

あいつがいないよ・・・!

これ、今から料理しようというときに包丁がないみたいなもんですからね。どうやって切んねんと。下敷きで代用するんかと。いや、無理だろと。

では、左上の「ファイル」タブをクリックしてください。

012_ファイルタブ選択

こんな画面になればOKです。先ほども触れましたが、バージョンによって若干表示に違いがあるかもしれません。でも大丈夫です。

では左のメニューから「オプション」というのを探してください。

013_オプション

私はここ↑にありました。オプション見っけ。

見つけられたら「オプション」をクリックしましょう。

014_オプション設定画面

こんな↑画面が開いたかと思います。左メニューの中にある「リボンのユーザー設定」をクリックしましょう。すると・・・

015_開発タブ設定

こんな画面が開きました。右側の箱に「開発」というのがありますね。そこが未チェックになっていると思います。

016_開発タブ設定OK

これにチェックをして、OKをクリックしましょう。

するとすると・・・

017_開発タブ追加

はいキタ━━━━(゚∀゚)━━━━!!

主役のお出ましですぞ!「開発」タブが追加されました。これで開発ができます。

この開発タブを表示させる設定は、一度エクセルを閉じても有効なままなので、今回限りの設定です。

では本格的な作業に入る前に一度ファイルを保存しましょう。ここでひとつ注意があります。

F12キーを押してください。

018_名前を付けて保存

「名前を付けて保存」のダイアログが開いたと思います。今ね、ファイル名が「Bool1.xlsx」になっていると思います。注意したいのが、「Book1」ではなく「.xlsx」の方!

このファイル名末尾のファイル形式を表す文字列のことを拡張子(かくちょうし)といいます。これがね、「.xlsx」では開発に適していないんです。

019_名前を付けて保存_拡張子変更

「ファイルの種類」のプルダウンを開いていただいて、「Excel マクロ有効ブック(*.xlsm)」というのを選択してください。これでこれから組んでいただく開発ソースコードも保存してくれます。

020_保存

では、私は「個人情報記入票【説明用】.xlsm」というファイル名で保存するとします。あなたのファイル名はなんでも大丈夫です・・・が、そう言われると困ると思うので、「個人情報記入票.xlsm」にしましょう。

ファイルの保存場所はどこでも大丈夫です(∩´∀`)∩。

021_保存後

保存後はエクセル上部に表示されるファイル名が今保存した名前になっていればOK。

これで下準備は完了です。開発に入っていきましょう。

深呼吸して!今からあなたの新しい扉が開くよ!


入力チェックを実装する ~初級編その0~

ではでは、改めて開発に入っていくわけですが、入力様式を見てみると見た目はそれっぽいのが出来上がってるんですよね。

最初にお伝えしておきますと、ここで獲得いただく知識やスキルはのちに取り組むPHPのプログラミングでも活きてきます。

いきなりすべてを理解することは難しいので、最初は表面を撫でるくらいの気持ちで力まずに取り組んでみてください(∩´∀`)∩。

理解できなくてもOK!続けているとこれまで理解できていなかったことがある日突然理解できることもあるから!


ではまずは様式の説明をします。

022_様式説明1

大きく分けて児童情報の入力欄と保護者情報の入力欄があります。アスタリスクがついている項目は入力必須の項目です。

023_様式説明2

保護者用の入力欄は二人分あります。最低一人分の入力があればOKとするので、二人目の欄には必須マークをつけていません。

項目名の文字数や入力欄の大きさによっては項目名のセルを結合しているところが今回のポイントです。後々説明します。

024_様式説明3

本来の運用では個人情報の取扱いに関する言葉がつらつらと並ぶんでしょうけど、ややこしいことは省略です。


では、本格的に始めていきます。

I4セルに「↑入力完了後に必ず押下ください」という文言を用意しています。ということはなにか押下できるパーツがそこに来るんですよね。

025_ボタン配置案内

早速「開発」タブの出番です。

027_ボタン配置する

「開発」タブを開き「挿入」をクリックするとその下に各コントロールの一覧が出てきます。上図の赤枠で囲っているアイコンをクリックしましょう。

すると、カーソルが十字状になります。その状態で、ボタンを配置したい場所で左クリックしながら四角を描いてください。

028_マクロ登録

四角を描いて左クリックから指を離すとこんな↑ダイアログが開いたかと思います。「マクロの登録」って書いてますね。

そう、今からマクロを作ります。「マクロ」っていうのは・・・

Google先生~~~!

031_マクロとは

はい。必殺、検索結果そのまま貼り付け!

要するになにかしらの機能ですね。ソースコードを書いてマクロを作ることをマクロを組むなんて言います。

用例:「そんな作業マクロ組んだら一瞬っしょ?(ドヤ」
(複雑で難しく時間のかかる作業もマクロで機能を作ってシステム化すれば人の手を煩わさずに対応できるよ)


で、マクロ名のところにはこれから組むマクロの名前をつけます。

029_マクロ登録_sub名入力

「入力チェック1」として新規作成ボタンをクリックしましょう。

すると・・・

030_ソース入力画面

こんな画面になりましたでしょうか。ソースコードを書いてくれと言わんばかりのUI(ユーザインタフェース)!

そうです。ここにソースコードを書いていきます。

ここに記載していくソースコードはVBA(ぶいびーえー)というプログラミング言語です。

VBAとは、Microsoft Officeに含まれるアプリケーションソフトの拡張機能で、利用者が簡易なプログラムを記述して実行することで複雑な処理の自動化などを行なうことができるもの。また、そのために用意されたプログラミング言語。
出典:IT用語辞典 e-Words

どうして、PHPの前にこれをやるのかっていうのは今回の最後の方で改めてお伝えします。とにかく、今から組むのはVBAという言語です。


入力チェックを実装する ~初級編その1~

いよいよ始まります。本格的な実装が。

そうそう、ソースコードを書く行為は「開発」というより「実装」という言葉の方が使います。「開発」という言葉にはソースコードを書いた後のテストも含まれるけど、「実装」は純粋な機能を作るという行為に使います。

さて、ではまず実装していく内容を確認します。

大きく分けるとプログラミングを通して

・入力漏れがないこと

・正しい形式で入力されていること

・想定外の入力がないこと

この3つを実現させます。この3つ、見覚えありませんか?それもそのはず、このページのここまでの説明で一度登場してますので(∩´∀`)∩。

では、最もわかりやすい

・入力漏れがないこと

をはじめにやります。前項の説明で必須マークの話をしました。必須マークがある個所は絶対に値があるようにさせたいのです。それを実現させましょう。

そうそう、値(あたい)という言葉もこれからかなり頻繁に登場します。ユーザが入力した項目ごとのデータをといいます。

じゃあまずは「ふりがな」項目を対象に実装します。

032_最初の実装対象項目

と、その前にね、たった今ボタンを作ったあなたはなんでもいいからボタンを押して、自分で書いたプログラムが動くのか検証したい!って気持ちでいっぱいだと思うんですよ。ええ、わかりますとも。

だからまず、簡単なソースを書いてこのボタンとソースコードが本当に連動しているのかを見てみましょう。

初学者がまず取り組む簡単なコードといえばそう、みんな大好き「Hello World!!」。初学者向けでこれが出てこない参考書ってあるんですかねってくらいこの世界では「Hello World!!」は有名です。

ピアノで言ったらバイエル的な存在です。日本語で言ったらあいうえおですわ。ドラクエで言ったらスライムですね。赤ちゃんで言ったら寝返り的な。

じゃ、こんなの書いてみてください。

    MsgBox "Hello World!!"

033_ハローワールド

↑この画像みたいに打てたらOK。

じゃあこれで先ほどのボタンを押してみましょう。

034_ハローワールド出現

はろーわーるどキタ━━━━(゚∀゚)━━━━!!

こんにちは世界~~~~~~!!!!⊂⌒~⊃。Д。)⊃



はい、テンション上がってしまいましたね。

今引いたり冷めたりした人!野暮ですよ!"(-""-)"

小さな成功体験の積み重ねが徐々に自信をつけていくわけですから、この先も小さな「できた」を噛み締めていきましょう。


補足ですが、ここまでの実装で実行時にエラーが出てしまった場合は、一度リセットボタンから処理を止めてください。

042_停止ボタン

で、修正後に再度ボタン押下から実行してみてください。



さて、これでボタンとソースコードが連動していることはわかっていただけたと思います。

    MsgBox "Hello World!!"

処理内容も簡単に説明しましょう。これは、MsgBox関数(めっせーじぼっくすかんすう)に「Hello World!!」という文字列を指定しています。

関数っていうのはなにかしらの処理だと思っててください。後続記事でもう少し詳しく説明します。今はなにかしらの処理でOK。

今回だったら開発者が指定した文字列をポップアップに乗せて表示する、という処理ですね。

私の説明で言葉足らずなところがあるかもしれませんが、その都度関連ワードで調べてもらえると吉です。例えば、今回の「MsgBox関数」・・・

035_msgbox関数

先人たちが懇切丁寧に説明していますので(∩´∀`)∩。いや~あっぱれ。


では、必須項目のチェックに参ります。いきなりですが、新しいことを2つ覚えてもらいます。概念1つとプログラミング構文1つ。


ここからの説明が、初心者にはつまづきポイントです。正直、私もプログラミング学習初期のころはまったく理解できませんでした。プログラミングを重ねるうちに徐々に感覚として理解していくのでここではわからなくてもヨシとしてください。


まず変数(へんすう)という概念。

ソースコード中で何か値を処理するにはその値の入れ物が必要になります。その箱は制約付きですが、その制約範囲内なら中身は自由に変えられます。

では、以下のソースを次の図のように打ちましょう。

    'メッセージ
   Dim message As String

036_変数登場

では説明です。

まず、

    'メッセージ

これあるじゃないですか。VBAでは頭にシングルクォーテーションがつくとコメントとして扱うんですね。コメントはソースコードとして処理されません。謂わば人間用のメモ書きとしての用途です。

なにを書いてもプログラムに影響を与えません。今の段階ではこれの有用性がいまいちわかんないと思いますが、後続記事でわかってきます。

で、

Dim message As String

これ。4つの塊がありますね。「Dim」「message」「As」「String」の4つ。

このうちユーザの裁量で自由に変えていいのは「message」だけです。

決められた範囲内で変えていいのは「String」だけ。

「Dim」と「As」は決まり文句ですね。

Stringは「すとりんぐ」と読みます。そのままだね。

まずDim。Google先生~~

037_dimとは

ほえ~「Dimension」の略なんですね。私も知りませんでした。うん、別に知らなくても困らない知識です。でもすごい大事なことが書いてある!

「どのような値だけが代入されるのを許すか」宣言するために使用

そうそう。さっき「決められた範囲内で変えていいのは「String」だけ。」って言ったじゃないですか。なので、実際に代入を許可する値の種類を指定するのが、このStringの部分なんです。

Dim 変数名 As データ型

という書き方です。「As」はデータ型の前につける飾りと思っててください。dim同様、深い意味はないです。そういうものなんだと思っててください。

Dim message As String

ここまでの説明を踏まえると、「message」という名前の変数をString型で宣言した、ということになります。さっき値の入れ物が必要になる、と言いましたが、このmessage変数こそが入れ物です。

ここでおそらく、2つの疑問があると思います。

String型ってなんだろう・・・?宣言したってどういうことだろう・・・?

まず、String型は言い換えると文字列型(もじれつがた)です。データの型には数値型配列型真偽型などがありますが、その中でも最もオーソドックスなやつです。これを指定すると変数に文字列を格納できます。

ほかのデータ型を本格的に使いださないとString型も説明しづらい/理解しづらいだろうなのでここでは浅い説明でとどめさせてください。最初に制約付きといったのはこのデータ型のことです。


そしてもうひとつ、宣言したってなんだ?という話ですが、後に続くソースの中で「message」という変数を使うぜ?みんなよろしくな!ってことです。みんなっていうのはソースコードです。

ケースバイケースではありますが、宣言をしておかないと「おまえなんて知らないぞ!」とエラーになることがありますので。


さて、新しいことを2つ覚えていただくといったうちの1つが終わりました。

ではもう1ついきましょう。これもプログラミングの構成要素としては代表中の代表・・・IF構文(いふこうぶん)です!

こんなソースを下図のように追加してください。

   'ふりがな(児童)
   If Range("B4").Value = "" Then
       message = "ふりがなが入力されていません。" & vbCrLf
   End If

038_if構文

早速構文だけど・・・

If 条件式 Then
    条件に合致した場合に行う処理
End If

こうです。Ifっていうのは「もしも」ですね。中学校で習った気がします。

そしてThenには「そのとき~」という意味があります。

もしも、ほにゃららだったら、そのとき~~~を行う、という感じです。

End IfはIf文の処理はここまでだよ、というのを示しています。


じゃあ今回書いた条件式のところを見てみましょう。

If Range("B4").Value = "" Then

このRange()(れんじ/れいんじ)っていうのはエクセル特有なんですが、括弧の中に書いてる"B4"からして用途はお分かりになると思います。

B4セルを参照するってことですね。さらにそのセル情報に「.Value」がついています。Valueは値という意味。

Valueの前に「.」←これがついているじゃないですか。ドット。

これは「の」と解釈してください。

Range("B4").Value → 「B4セル」 「の」 「値」

つまり、B4セルの値を取得しています。そしてそれが""とイコールかどうか、を条件にしています。

""っていうのは空文字のことです。空文字のことをブランクとも言います。

これで、入力が何もなかったら条件式を満たすので

        message = "ふりがなが入力されていません。" & vbCrLf

この処理が実行されることになります。

ではですね、一度動かしてみましょう。その前に、今のままだと何をやっても「Hello World!!」が通知されてしまうので、少しだけ変更します。

    MsgBox "Hello World!!"

    MsgBox message

としてください。

さて、これで一度実行してみます。

まずはふりがなに何も入力しないでボタンを押してみます。

040_おためし動作確認1

はい、Ifの条件を満たしたので、処理がIfの中に入り、message変数に”ふりがなが入力されていません。”というメッセージが設定されました。

MsgBoxにはmessageを指定するように変更したので、このような出力となります。

では次に、ふりがなに値を設定してボタンを押してみます。

041_おためし動作確認2

さて、どうでしょう。先ほどと同じようにポップアップが出ましたが、今度はメッセージがありませんね。

    'ふりがな(児童)
   If Range("B4").Value = "" Then
       message = "ふりがなが入力されていません。" & vbCrLf
   End If

このIf文の条件を満たしていないので、Ifの中には入りません。

ですが、MsgBox自体は表示する処理になっているので、何も値が設定されていないmessage変数が渡されたことで、上図のような空のポップアップが表示されました。

プログラム通りに動いています。

なんとな~く、動作を見てみて理解いただけたと思いますが、2つのことを改めてお伝えしましょう。

まずはこの処理

    'ふりがな(児童)
   If Range("B4").Value = "" Then
       message = "ふりがなが入力されていません。" & vbCrLf
   End If

2つの値(右辺と左辺)をイコールでつなぐ処理が2つありますね。

でもこの2つ、似たような書き方ですが意味合いはまったく異なるんです。

まずひとつめの

   If Range("B4").Value = "" Then

こちらは先ほども申しました通りイコールを使って値が同じかどうかを比較しています。

もうひとつの

       message = "ふりがなが入力されていません。" & vbCrLf

こちらの処理、これはmessage変数に値を代入しているんです。これはそういうルールですね。右辺の値を左辺に代入します。

この代入というのはプログラミングをする上でかなり頻繁に使うもので、右から左に入れる、というルールも絶対に変わりません。

上記処理中の「& vbCrLf」は後続記事で解説します。


そしてもうひとつ、

    MsgBox message

こちらです。最初に「Hello World!!」を出力したときはソースコード中にも「Hello World!!」と書いていたので、そのまま書いたとおりにポップアップに表示していました。

ポップアップに表示する文字列は変数でも指定可能なんです。今回はmessage変数を指定しました。こうすることで動的な処理を組み立てることができます。

動的というのはデータや入力の状況に応じて適切な出力をプログラム側で勝手に(自動で)やってくれる、ということです。


ちなみに

    MsgBox "Hello World!!"

このように、固定の値をソース中に直に書くやり方をハードコーディングといいます。基本的にやってはいけないアンチパターンです。

察しのいい方はこんなことを思うかもしれません。

message = "ふりがなが入力されていません。" & vbCrLf

「これ↑もハードコーディングじゃないの!?」

そうです。鋭いですね。これもあまりよくないです・・・が、今はこれでいきましょう。ここまでで新しい知識が一気に押し寄せてきたと思います。

一気に詰め込むのはよくないのでね。大丈夫、ここのハードコーディングも最後には解決しますので。

今回、手を動かすのはいったんここまでにしましょう。続きは次回です。あとは読み物として楽しんでいってください。


あ、最後に保存をしておいてください。次回続きを実装していくので。保存のショートカットはCtrl + S です。


PHPの前にVBAをやる理由

本文の途中で、最後にお伝えしますね、と言っていたどうしてPHPの前にVBAをやるのか?についてです。

まず一番の理由は開発環境の構築がないからです。初学者に向けた連載という性質上、早々に挫けてしまうリスクはできる限り排除したいんですね。

開発環境って言われた手順通りにすんなりいけば問題ないんですけど、PCの状態によってはなぜかうまくいかなかったりとか罠が待ち受けてることがたまにあるんです。

ただ、今回避けたことでこんな風に思うかもいるかもしれません。

開発環境の構築・・・めっちゃ厄介なのでは?

ち、違うんです!リスクを避けたというだけ!PHPに取り組むときは必要になりますが、そのころにはなんとしてでも構築してやる!ってマインドが出来上がってるので、仮に何か起きたとしても大丈夫です。


そして、開発環境構築の回避以外にも実はメリットがあります。


2つ目はデータ型の概念を学ぶことができます。今回String型が出てきましたよね。画面に表示するmessageという変数はString型で宣言しました。ほかの型は後続の記事でご案内しますが、なんとPHPにはデータ型の宣言というものがないんですよ。

そこが初心者でも取り組みやすいといわれる理由ではあるのですが、でもデータ型は知っておいた方が後々困らないで済みます。そのあたりは実際にPHPの章に入ってから触れられたらと思います。


そして3つ目。ループ処理の構造を理解しやすい、です。ループ処理は次回やりますが、エクセルは処理の入力・出力に使用するデータをシート上で管理できるので、実際のデータと処理の様子を説明しやすいんですよね。

既存のデータが実装したソースによってどのように処理・出力されるのか、というプログラムの基本はエクセルだと理解しやすいです。ひとつひとつセル単位で管理しているので。


そして最後に、エクセルマクロの開発スキルは普段の業務にも活かすことができる、です。プログラミングって例えばweb系をやりたかったとしたらじゃあPHPだけできればいいってものでもないんですよ。

もっと作業を効率化したり、エクセルマクロで作った機能との合わせ技で開発をよりスムーズに進めることができます。もちろんそう言うからにはPHPの章に入ってからもエクセルマクロを使うシーンをご用意しています。

というわけで、以下の4つをPHPの前にVBAのレクチャーをご用意した理由としてあげました。

・開発環境の構築がない
・データ型の概念を学べる
・ループ処理の構造を理解しやすい
・普段の業務にも活かせる

今はまだピンと来ないものもあるかもしれませんが、この先進める中でなんとな~くわかっていただけたら幸いです。


あとがき・ふりかえり

あとがき&振り返りです!本編中では説明を端折ったところや、記事を書いてみての所感等を伝えられたらと思います。

まずはお疲れさまでした。

今回、以下のショートカットをご案内しました。これらはこの先も大活躍します。

・Ctrl + Aキー 全選択
・Ctrl + Cキー コピー
・Ctrl + Vキー ペースト(貼り付け)

AはALLのA、CはCOPYのCと説明しておきながらVの説明は飛ばしたんですよね。手元のキーボードを見ていただくとわかりますが、ペーストをPキーだとするならめちゃくちゃ離れているじゃないですか。

で、調べてみたんですよ。どうして貼り付けアクションが「ペースト」でありながらショートカットはVキーなのか。

結果、正式な解説は見つけらませんでしたが「Cの隣だから」という説がもっとも有力のようでした。使いやすいですからね(∩´∀`)∩。

あとショートカットキーの説明について、補足ですが・・・

・同時押しは A + B
・順番押しは A → B

という風に記載していきます。今回もそうなってます。順番押しっていうのは同時押ししなくていいときね。

-- -- --

初めてのプログラミングということで、突然英語ばかりが出てきたので、人によっては辟易したかもしれません。

039_メッセージ出力

コメントは人間のための記載なので当然日本語になりますが、それ以外はほぼ英語ですね。メッセージの代入を省いては。

これは徐々に慣れていきましょう。唯一マクロ名称の「入力チェック1」のみ日本語ですが、本当はそこも英語であるべきなんですよ。

今回、初学者向けということで日本語にしちゃったけど、2つ目のパターンを組んでいただくときは英語にします(次々回)。

-- -- --

説明中にいろんな用語が出てきますが、初出の時はだいたいふりがなをつけさせてもらいます。私事だけど、初心者向けの参考書とかで慣れない用語にふりがながふってないの、すごいいやなんですよ。

こう、初心者っていうのはプログラミングならこのITの世界を覗いてみたい/入ってみたいと思ってやってくると思うんですよね。だったら言葉と仲良くなるの、すごく重要じゃないですか。なのになぜふりがなを打たないっていう・・・。

心の中で読めないじゃないですか!もちろん口に出してもだけど。

説明の中には「言われんでも読めるわい!」ってケースもあると思うんだけど、そこは勘弁してください笑。今回も「値」とか読めてましたよね汗。

-- -- --

今回、初めてなので、一応作業環境についても触れておきましょう。

noteを見ながら取り組もうとすると、だいたいnoteで解説を読みながらエクセルで実装を進める、みたいな感じになると思います。

そんなとき、画面がひとつだと切り替えが頻繁に起こるので大変ですよね。できれば以下のような環境がおすすめです。

画像41

これ、私の環境を写真撮りました。いやん。影の具合かな。すげー陰気に見えるんだけど・・・(ノД`)・゜・。

画面が2つあると効率が全然違います。普段PCを触らなくて始めたばかりの方はいきなり買うのに気が引けるかもしれませんが、「やはり不便だ」と思うことがあったらその時でいいので購入を検討してみてください。

モニター置くとスペースとるので、可能なら一緒にアームの購入も検討されるといいですよ。

ちなみに、1画面の場合、切り替えはショートカットで行った方が楽でいいです。

Altキー + Tabキー

Altキーを押したままでTabキーを連打することで、切り替え先の画面を選べます。詳しくはやってみればわかります。

--  --  --  

本文中に私からソースコードを案内してそれをあなたの環境に記載いただく流れが頻繁にあります。この先も。

ソースをコピー&ペーストするか、手で打つかはどちらでもいいですよ。

マジ初心者です!って方は練習がてら打ってもいいですし、ある程度齧ってるけど復習のつもりできましたって方はコピペで時間短縮を図るのもOKです。


おわりに

ありがとうございました。

内容としては簡単でしたが、新しいことを頭に入れるのはそれなりに大変かと思います。しばらくは新しい知識がじゃんじゃん登場するので辛抱してください笑。

後になるほど基礎知識の応用&応用で楽に、楽しくなっていきます。


次回は入力チェックの続きとデバッグについて学びます。デバッグもプログラミングをやる上では欠かせない要素です。


今回のわからなかったところや励ましはページ下部のコメントでくださいませ。

では、少し休んで次にいきましょう(∩´∀`)∩。

ありがとうございました!


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