第1講 VBAとは?マクロとは?
第1話 講義対象者
目次にも書いてありますように、
能書きなど入らない、と思う方は第3話に飛んでください。
本話と次話の課題は、本講義の対象者や講義方針などについて述べることです。
本講義の対象は、
一度もプログラミングをやったことがない方と
書籍やサイトなどでC言語やvbaなどのプログラミングに挑戦したけど挫折してしまった方などを対象とします。
あるいは、エクセルをやっていてマクロに挑戦してみたいと思っている方も大いに歓迎します。
おそらく、マクロを自在にこなしている方を見て、
コンプレックスを抱いていた人もたくさんいらっしゃると思います。
マクロやプログラミングをやってみたいけど、
敷居が高そうだと思って躊躇(ちゅうちょ)している方も多いでしょう。
自分の能力では無理!と決めつけている方も少なくはないでしょう。
ですが、正しい段取りさえとれば誰でもVBAを使ってマクロを組めるようになると断言しましょう。
もし、VBAを使って数独自動生成アプリの開発に成功したら、
プログラミングが面白くなって、さらにC言語やJavaにも挑戦したくなるとも予言しましょう。
VBA卒業者のためのC言語講義やC++講義なども開設予定ですから、
是非こちらも読んでいただければと思います。
まってまって、そもそもマクロって何?VBAって何?と思う方もいらっしゃいますよね。
大丈夫ですよ。
まったく知らない方にもプログラミングが組めるようにすることが、
この講義の目的ですから。
マクロとは、複数の手順を自動実行させる機能のことです。
プログラミングについて何も知らなくても、マクロは組めます。
つまり、プログラミングしなくてもマクロは組めます。
第5話から第8話において、プログラミングを組まずにマクロを実行させることを体験していただきます。
ですが、マクロを高度なものにしたい場合にはプログラミングと組み合わせた方がよいのです。
数独自動生成新方式アプリ(ハイブリッド方式)Ver.3
数独自動生成新方式アプリ(ハイブリッド方式)Ver.4
数独自動生成新方式アプリ(ハイブリッド方式)Ver.5
もマクロですが、プログラミングと組み合わせています。
今はわかりませんが、DSが発売された当時は、
DS用の数独やナンプレのソフトでも、自動生成機能はありませんでした。
DSにさえなかった機能を、自分で組めるのです。
しかも、上の3つのソフトは、数独の良問しか生成しません。
良問とは仮定法を使わずに理詰めで解ける問題のことです。
そう、理詰めで解ける問題しか生成しないナンプレ自動出題アプリを自分で開発できるのです。
そして、プログラミングをするためのものがVBAです。
VBAは、Visual Basic for Applicationsを略したものです。
つまり、応用を目的としたVisual Basicの意味です。
Visual Basicとは、マイクロソフトの創業者のビルゲイツが開発したBASICを、
直感的に扱えるようにした言語であり、統合開発環境です。
統合開発環境とは、また随分と難しい言い回しであるとお感じになるかもしれませんが、
内容は簡単なことです。
実は、プログラミングを組んで実行するには、
プログラミング言語以外たくさんのツールを必要とします。
エディタ・デバッガ・リンカー・コンパイラなどです。
エディタは、プログラミングの文章=コード=ソースを編集するワープロです。
デバッガは、プログラムの欠陥を直す作業であるデバッグを支援するソフトです。
プログラムの問題点をバグ(虫)といい、それを直すことをデバッグ(虫取り)というわけです。
プログラムのバグを直す作業は、デバッガの支援がないと大変困難ですが、
デバッガは何が原因で実行エラーが起こるのかを教えてくれます。
デバッガの指摘に基づいてエラー原因を探れば、
比較的容易にコードの問題点の探索とその対策が出来ます。
逆に言うとデバッガの支援なしにはバグとりであるデバッグは不可能に近いと言えます。
コンパイラは、Visual Basicで作ったプログラムソースを機械語に一括して翻訳するソフトです。
プログラム言語とは、コンピュータに命令を伝える言語であるとよく言われますが、
実は、この言い方は少し正確ではありません。
コンピュータが理解できる言語は0と1からなる機械語だけです。
この機械語を人間において理解できる人は、専門家だけです。
普通の人でも理解できるように開発されたものが、
プログラム言語です。
どのプログラム言語も英語の文法の基に築かれています。
普通の人間に理解できるプログラム言語を、
コンピュータに理解できる機械語に翻訳することが、
コンパイラの任務です。
ビル・ゲイツが開発して愛したBASICが小馬鹿にされたのは、
①コンパイラではなくインタプリタ(一括翻訳でなく1行1行翻訳する方式)である
②サブプログラムが独立していなくて構造化プログラミング
(プラモデルのように部品=パーツを単純に結合させてプログラミングするやり方)ができない
ことが原因でしたがVisual Basicになった現在2つの欠陥は解消されており、
今やC言語に匹敵する言語になっています。
C言語で開発できるものはすべてVB(Visual Basicの略称)でも開発できると、
断言します。
VBに似た言語にVisual C#もありますが、こちらでもC#のみで開発できて、
VBには開発できないものなどはありません。
つまり、VBもVisual C#もC言語もC++も開発能力に差はないと言えます。
C言語は長年プログラム言語の王さまの地位を保ってきましたが、
C言語の難点は、非常に難しい言語であるということです。
わかりやすさでは私はVBがNo.1だと思っています。
さて、統合開発環境とはなんでしょうか。
プログラムを組むには言語以外のたくさんのツール=ソフトを必要とします。
それらのソフトを1つに統合したものを統合開発環境と呼ぶのです。
複数のソフトを統合できるようになったのは、
Windowsという基本ソフトのお陰なのです。
Windows以前の時代は、ソフトは1つしか起動できませんでした。
ですから、エディタ(プログラム専用のワープロ)でコード=プログラムの文章を書き、
エディタを閉じてコンパイラ(機械語に一括翻訳するソフト)を起動してコンパイル(一括翻訳)させてプログラムを実行させ、
実行エラーなどの不具合がある場合には、
デバッガ(デバッグを支援するソフト=欠陥を直す作業を支援するソフト)を起動してデバッグ(欠陥を直す)する・・・
という煩雑な作業を余儀なくされていました。
しかし、Windowsの時代になり、複数のソフトを同時に起動できて、
窓を自由に切り替えられる時代になり、
初めて複数のソフトを1つに統合することが出来るようになったのです。
VBAは応用のためのVBですから、当然これも統合開発環境です。
VBAの中にエディタがあり、
デバッガがありリンカーがありの形になっています。
リンカーだけ説明しませんでしたが、
プログラムは1つのファイルだけで動くわけではなく、
複数のファイルやフォルダが連携して動くわけですが、
連係プレーのためにファイルを連結してつなげるのがリンカーの仕事です。
VBAはエクセルとの相性のよい統合開発環境です。
結果をエクセルのシートに出力できることが、
最大の魅力です。
実は、ワードにも出力することも出来ます。
ですから、わかりやすさと実践するときの機動性・実用性の高さから、
プログラミング初心者はVBAから始めるべきであるが私の持論です。
始めるならC言語やJavaからなどと考える必要はさらさらありません。
なぜなら、プログラムの基本構造は同じであるからです。
VBAで学んだことは、
ほぼ直接にC言語やJavaなどに活かすことが出来ます。
C言語を特徴づけるポインタや、
最近のプログラミングの主流であるオブジェクト(もの)指向プログラミングは、
VBの基礎に上乗せすればよいだけです。
ポインタやオブジェクト指向は、初心者にとって最も敷居の高いものです。
いきなり、C言語やJavaから始めれば挫折する可能性が高いと言えます。
実際に多くの方が挫折して、このページ来ていると思いますよ。
第1話が長くなくなってしまいました。
話を変更して講義方針を述べましょう。
第2話へ