プログラミングの勉強で、最初の段階でつまづく人が沢山います。
わたしの経験では、プログラミングの勉強のコツは苦手意識がつかないようにする事です。
皆、最初の段階でこむずかしい事に手をつけて、疲れてやらなくなってしまいます。
だから最も簡単にプログラムを動かし、意外と簡単だと思ってもらえるようこのページを書いています。
独学に最適なのはエクセルVBAで、設定が簡単だしすぐに仕事に活用できるし、プログラムが理解しやすいです。
簡単ですがレベルが低いというわけではなく、わたしの年収を大幅に上げる成果をもたらしてくれました。
学習して得られるものや、VBAで出来る事は下記のページを見てください。
もしもパソコンを持っていなかったら、自己投資だと思って買ってください。
わたしはいつも2~3万円でディスプレイも付いている中古のデスクトップパソコンを買っていますが、充分に使えます。
VBAの勉強で、まず一番最初にすること
エクセルを起動して新規ファイルを作ります。
そうしたら名前を付けて保存してください。
その時に必ず
ファイルの種類を、Excelマクロ有効ブック(*.xlsm)
にしてください。
普通に名前を付けて保存をすると、拡張子(ファイル名の後ろにつく)は『.xlsx』ですが、これだとVBA(マクロ)を保存できません。
せっかく勉強で打ち込んだVBAが保存の時に消えると、初心者のモチベーションはそこで打ち砕かれます。
忘れないように最初に拡張子を『.xlsm』に変更して、保存をしましょう。
拡張子に馴染みがない
拡張子に馴染みがないなら、これから慣れてください。
パソコンを買うとデフォルトの設定で、拡張子が見られなくなっているかも知れません。
その場合は、何か適当なフォルダを開いて、フォルダの上の方にあるタブ(ファイルとかホームとか共有や表示とある)の、
『表示』をクリックして、『ファイル名拡張子』にチェックを入れてください。
このあたり、バージョンによって多少違いがありますが、『拡張子を表示する』でググッて(グーグルで検索)ください。
一番勉強しやすいVBAでも最初はこういった馴染みが薄いものも出てきますが、他の人がここを超えられないからこそ、乗り越えた人の給料が上がりやすくなります。
変数って何?⇒難しくないです
数学で変数というのを聞いた事ないですか?
数学に苦手意識を持っている人は多いと思いますが、それは数字を扱う教師に不気味な先生が多かったからです。(決めつけ)
ですが独学なら大丈夫です。
変数は、
Y + 1 = 答え
のYの事です。ここに2が入れば
Y(2が入ってる)+1 = 3
になります。変数は色々な値が入る箱だと覚えてください。
実際のプログラムでの変数
勉強を始めてプログラムのサンプルを見ると混乱するのが、
どれが変数で、どれがプログラムの命令文なの?
と区別がつかない事です。
実際のプログラムに、変数を使ってみます。
変数の名前は、『Hensu1』にしました。
変数以外の英語はエクセル表で使うsumとかの関数と同じで、VBAに決められている関数等です。
とりあえず変数とそれ以外
の区別さえつけば、プログラムを理解できます。
簡単なプログラムを1行ずつ読んでみる
まず1行目の
Sub Macro1()
ですが、これは Macro1 というプログラムのタイトルだと思ってください。
Macro1 というマクロ名は変えられます。
Subというのは決まり文句です。
() も勝手につきます。
本当はプロシージャとか言う名前ですが、初心者の内にその辺りの名称を追うとワケがわからなくなるので、放っておいて大丈夫です。
わたしも未だに名称をあまり覚えていませんが、問題ありません。
コメントアウトはメモ書き
‘ Macro1 Macro
これはプログラムの動作に影響しない、メモ書きです。
先頭に『’』を付けると、その文章はメモ書きになりプログラムで実行されない文になります。
このプログラムで何をしていますとか、そういう説明が書けます。
変数の宣言
Dim Hensu1 As Long
前述した変数『Hensu1』を、プログラムで使いますよと宣言しています。
Dim は Sub と同じで決まり文句で、深く考えないでください。
As Long というのは、Hensu1 に数字を入れるという意味です。
桁が多い=長い整数の意味で、Long だそうです。
変数に文字を入れる場合は
As String
になります。
As の後に続くのは、LongやStringの他に時間とか日付とか数個ありますが、その都度
『VBA 宣言』でググれば出てくるので暗記する必要はありません。
変数に値を入れる
Hensu1 = -1
Hensu1に-1(マイナス1)を入れています。
イコールでつなぐと値を入れた事になります。
1行ずつ見ていくと、すごく単純な事をしているのがわかると思います。
変数の値をエクセル表に出す
Cells(1, 1).Value = Hensu1
プログラムの結果をエクセル表に出力します。
Cells というのは、エクセル表のセルの意味です。
(1, 1) というのは、セルの位置を表していて、1行目の1列目のセルという意味です。
行と列に関しては後述します。
最後の .Value というのは、値を入れてね という意味です。
Cells(1, 1).Value = Hensu1 というのは、
セル(1行目,1列目)にHensu1に入っている値を入れるという意味になります。
実行すると
こうなります。
プログラムの入力から結果の出力まで、そんなに難しくないですよね?
これに加筆していく事で、どんどん複雑な仕事をプログラムにさせられます。
面倒な作業を自動化してプログラムに仕事をさせる事で、人より数倍の仕事ができて評価につながります。
End Sub
End のイメージ通り、プログラムの終了を意味しています。
データの入出力
プログラムで使うデータをエクセル表から取ったり、逆にプログラムの結果の値を表に出力(表示)したりするのに、エクセル表のセルを使います。
他のプログラムだと配列というのを使いますが、エクセル表の方がビジュアル的に見やすいので勉強がはかどります。
普段はエクセル表の
『行・列』
というのをあまり気にした事がないと思いますが、VBAでは少しだけ意識してください。
どっちが行で、どっちが列かです。
この図のように行と列はなっています。
行は1・2・3行で、列はA・B・C です。
ただややこしいのは、VBAで指定する時は行も列も数字です。
例えば先ほどのプログラムを変更し
▼
Cells(1, 2).Value = Hensu1
にすると、結果は
1行目のB列 に表示されます。
日本人がエクセルの行がどちらなのか混乱しやすいのは、縦書きの文化だからです。
パソコンは洋物なので、行も横書きの英語を基準にして決まっています。
英語の手紙を思い浮かべて、その三行目はどこかを考えれば理解しやすいです。
別にどっちが行・列か忘れてもググれば大丈夫なので、これも暗記しなくて大丈夫です。
プログラミングは別に全てを暗記しなくても大丈夫です。
暗記していたらプログラムを書くのが少し早くなるくらいで、ググりながら進めればOKです。
プログラムはどこに書けばいいの?
プログラムをどこに書けばいいのかですが、エクセルは非常にわかりやすいです。
マクロを作って、そこに編集で書き込めます。
まず、エクセルの表でマクロの記録をします。
エクセルのバージョンによってマクロの記録を起動できる場所が違います。
わたしが使っているエクセルでは、表の上部にある
表示>マクロ>マクロの記録です。
他のバージョンだと
開発>マクロ>マクロの記録とかなので、
『エクセルのバージョン マクロの記録』
でググってみてください。
マクロを記録する
マクロの記録をクリックすると、小窓が立ち上がってマクロ名を変えられるようになっていますが、別に変えなくても
OK をクリックすれば記録に進めます。
動画で録画しているのと同じ状態で、何か動作をするとマクロに記述されます。
とりあえず何もしないで、画面左下(バージョンによって異なる)に出ている
■ の記録終了ボタンをクリックしてください。
編集をクリックするとVBAが書き込める
記録終了ボタンをクリックしたら、再び
表示>マクロ> まで進んで 『マクロの表示』 をクリックしてください。
するとこのような画面が出るので
編集をクリックしてください。
そうするとVBAプログラムが見られるので、サンプルをコピーペーストしてみてください。
Sub Macro1()
ここに緑の枠内の文をコピー
End Sub
Dim Hensu1 As Long
Hensu1 = -1
Cells(1, 2).Value = Hensu1
プログラムを実行してみる
VBAを入力した画面の上の方にある、『実行』 をクリックすればプログラムが動きます。
エクセルの表を確認して実行結果をみてください。
それともう一つ実行の方法があります。
エクセル表から編集の時のように
表示>マクロ>マクロの表示
をクリックして、今度は
『マクロの実行』
をクリックしてください。
これだけでプログラミングの独学の最初の段階は終了
・プログラミングができる環境作り
・プログラムの記述
・実行結果を見る
という、独学するのに必要な事が終わりました。
どうでしょうか、何となくできるような気になりませんか?
初めてならこれだけで十分です。
大事なのはプログラムが動かせるまでの体験です。
0⇒1にするのが一番難しいので、あなたは一番難しい部分をクリアした事になります。
できる事の幅を広げるために、続きを書きました。
システム設計(難しくないです)についても書きました!