本記事はVisual Basicの解説から導入、プログラミングを行うところまでを一通り説明する内容となります。

そのため、「今までプログラミングに触れたことがない」「聞いたことはあるけれどよく解らない」という人はぜひ参考にしてみてください。

Visual Basicについて

VBとは



VBとはVisual Basicの頭文字で、Basicという言語の中にある方言の一つのようなものです。

Basicは数ある言語の中でも比較的歴史が古く、また文法がシンプルなため易しくて習得しやすい言語とされています。

まさにBasicなプログラミング言語といえるでしょう。

Visual Basicは、マイクロソフトが提供しているVisual Studioというソフトウェアで主に提供されているバージョンです。

一般的にVBの開発はVisual Studioを使用して行われます。


VBの歴史

VBの前身はMicrosoft BASICといい、これを開発したのがあのビル・ゲイツです。

マイクロソフトの成功の起点となったといっても過言ではない言語でした。

その後マイクロソフトの統合開発環境として作られたVisual Studioに組み込まれて、Visual Basicとなりました。

さらに機能が強化され、今現在でも主力言語の一つとして使われているVisual Basic.NETへと強化されてきました。

現代では単にVBといったらVisual Basic.NETの方を指します。

VB.NEという表記を見ることがありますが、この場合はVisual BasicとVisual Basic.NETを明確に区別したいときに使う略語です。

Visual Basic.NET(VB.NET)とは?できることと活用シーンを入門者向けに解説!VBとの違いとは?


そもそもプログラミング言語とは

ハッカー


巷には非常に多くのプログラミング言語が存在します。それらは様々な特徴をもっていて千差万別です。

ただし、一つだけ揺るがない共通事項があります。それは人間の言葉を理解できない機械に、人間の命令を伝えることです。

ただしそれは、機械はプログラミング言語を理解できるという意味ではありません。多くの機械は基本的にoか1しか理解できないのです。

では、なぜプログラミング言語を使うのでしょうか。答えは実に単純で、0と1では人間が理解できないからです。

たとえるなら日本語しか喋れない日本人と、サンスクリット語しか喋れないインド人が会話することはできません。

しかし英語やフランス語をお互い話せるなら、頑張れば何とか意思の疎通はできるでしょう。

このような共通語が、この場合プログラミング言語に相当します。

プログラミング言語とはまさに人と機械の間をつなぐ言語なのです。

ただし自然言語とは異なり、プログラミング言語は人が目的を持って作ったもの

習得がしやすい言語や、難関だが表現の幅が広い言語特定の命令を出すことに特化した言語など様々な特色を持ち合わせています。


VBのできること

VBの得意分野



VBで複雑な命令を作ることも可能ですが、本当の得意分野はそこではありません。

簡単な繰り返しや同じ作業をやりたくないときに少しだけプログラムを書いて人が楽をする、という時にその本領を発揮します。

簡単に学べて簡単に書けるのですから、難しい言語を用いて「5分の作業を無くすために5時間かかった」なんてことにはなりにくい言語です。

基本的に使いやすさを一番に考えた言語となっています。


VBの苦手分野

得意分野の裏返しがそのまま苦手分野となります。一言でいうと簡単な言語であるため、簡単なことしかできません

たとえばロボットや人工知能などの高度な技術が必要とされる分野において、VBが使われているケースはあまりないのです。


VBAとは

オフィスで働くプログラマー


Visual Basic for Applicationsの略で、主にマイクロソフトのソフトウェア向けに作られたVisual Basicの方言の一種です。

おなじみのExcelのマクロなどがこれにあたります。

VBとVBAはその中身はどちらも当然Basicであり、大きな違いはありません。

ただしVBAは、そのプログラムを書いたアプリケーション上でしか動かない、という特徴があります。

即ち、Excelで書いたマクロはExcelを操作することしかできません

パワーポイントを操作したりロボットを動かしたりすることは基本的に出来ない、ということです。

逆にアプリケーション上で動くものなら何でもできます。

現にExcelのセルとマクロだけで再現したゲーム『マリオブラザース』というのもあるのです。


VBの実行環境

VBのインストール

ラップトップパソコンで仕事をしているアフリカ系アメリカ人男性


VBは言語ですので、実はインストールがいりません

ただのテキストエディタで書いてもよいですし、EXCELでマクロを扱う場合はそのままEXCELで書くことができます。

問題なのはその書かれたプログラムを誰がどうやって機械に実行させるか、という点です。

実際によく使用される実行環境としては、Visual Studio(=VB)かExcelのマクロ(=VBA)で実行させるものとなります。

これらで実行したいという場合は以下にインストールに関する公式の情報へのリンクを張ってありますので辿ってみてください。


Visual Studioのインストール

ソフトウェア開発企業のオフィスで働くプログラマー


Visual Studioは最新版がVisual Studio 2019で、そのCommunityが個人向けの無料版となっています。

下記からダウンロードしてください。インストール手順も詳しく書かれています。

https://visualstudio.microsoft.com/ja/downloads/


Microsoft Office 365

Excelを持っていない場合はOfficeを用意しましょう。

現在パッケージ版のOfficeは有料しかありませんので、下記リンクよりWEB版の無料環境を構築してください。

https://products.office.com/ja-jp/free-office-online-for-the-web


VBの開発環境

Visual Studio Code

オフィスの上のビジネス資料


先の手順でVisual Studioをインストールしたのならば、Visual StudioをそのままVBの開発環境とすることも可能です。

本記事はあくまでVBの記事であるため、極力Visual Studioに依存しない情報を解説しましょう。

また、将来的にほかの言語に挑戦したいと思ったときのことも考えて、Visual Studio Codeのインストールをおすすめします。

Visual Studio Codeのインストールについては、以下の記事を参考にしてみてください。

Visual Studio Code(VS Code)の使い方、機能を初心者向けに解説!インストール、初期設定もチェック

Quiita:Visual Studio Code (Windows版) のインストール


結局Visual Studioじゃないか、と思うかもしれませんが、Visual StudioとVisual Studio Codeはメロンとメロンパンくらい違います。

現在プログラミング用エディタの最高傑作ともされているほどに素晴らしい性能のエディタです。

また、Visual Studio CodeでのVBプログラムの実行もできます。


Visual Studio

Visual Studioの設定やVisual StudioでどうやってVBを扱うのか、についてはVisual Studioの説明なので割愛します。

詳しくは下記のURLを参照してください。

https://docs.microsoft.com/ja-jp/visualstudio/ide/quickstart-visual-basic-console?view=vs-2019


VBの文法入門

文法について

ラップトップコンピュータで仕事をするビジネスマン


プログラミングをしよう、と思ったときに避けて通れない要素が文法です。

プログラミングを学ぶ上で、おそらくつまずく人が最も多いポイントはここではないでしょうか。

ですが、安心してください。VBの文法は非常に簡単なものが多いです。

本記事ではよく使う部分をいくつかピックアップして例文を掲示→解説という形で紹介します。


変数

変数とは数学における変数とほぼ同じと思ってよいです。

プログラムの中で、そのときそのときで変わる可能性のある数字や、文字を入れておくのような役割となります。

また、変数にはルールを設けることができ、数字しか入れられない箱などさまざまな設定が可能です。

例文

  1. Dim X As Integer
  2. Dim Y As Integer = 1

単語ごとに解説します。

  • Dim:このあとの文章で変数を定義しますよ、という命令(実際にはもっと細かい意味があります)
  • X:今回定義しようとする変数の名前(Yも同様です)
  • AS:このASの後で指定するものしかこの変数には入りません、という設定
  • Integer:英語で整数という意味
  • =10:整数しか入らなくさせた箱の中にあらかじめ1を入れておく

上記のプログラムで、Xは整数しか入らない変数として定義されました。

Yは整数しか入らない変数として定義され、その中身は1として定義されています。


条件判定

変数が定義できたので、次は「その変数がもし○○だったら」というような場合分けの処理を解説します。

例文

  1. Dim X As Integer = 0
  2. Dim Y As Integer = 1
  3. If Y = 1 Then
  4.  X = X + 10
  5. ElseIF Y = 2 Then
  6.  X = X + 20
  7. Else
  8. X = X + 1
  9. End If

変数の定義は先述とほとんど同一です。1行ごとに解説します。

  • If Y = 1 Then:もし(If)、Yの中身が10(Y = 1) だったら(Then)次の文章を実行する
  • X = X + 10:最初にスペースがあるのは、この文はIf文の中の文章だという表現

今Yの中身は1なので、この文章が実行されます。この時Xは0です。それをX+10におきかえる、という式になっています。

今Xが0なので、これを実行した後はXは10。

  • ElseIF Y = 20 Then:そうではない(Else,ここではYが1でないとき)もし(If)、Yの中身が2(Y = 2) だったら(Then)次の文章を実行する
  • X = X + 20 :この場合、Xには20が入る
  • Else:そうではない(Else,ここではYが1でなく、2でもないすべての場合)次の文章を実行する
  • X = X + 1:この場合、Xには1が入る
  • End If:Ifの文章がここで終わりであるという意味

Yの中は1なので必ずXの中身は10になりますが、Yの中身が変わった場合にXの中身も変化する、という条件判定ができました。


繰り返し処理

Webデザインとコーディング


変数定義ができ、条件判定ができました。今度はそれを繰り返してみましょう。

例文

  1. Dim X As Integer = 0
  2. For i = 0 To 3
  3. If i= 1 Then
  4.   X = X + 10
  5. ElseIF i= 2 Then
  6.  X = X + 20
  7. Else
  8. X = X + i
  9. End If
  10. Next

変数の定義はXだけ、条件判定でYだったところに新しくiに変わっています。

Forとは繰り返しの命令文です。iは繰り返しに使われる数字でこの命令ではiが0から3まで変化します。

iは0から始まり、最後のNextが実行されるたびに1増えてForのところまで戻ります。

最後にiが3になると、Nextが実行されてもForのところには戻りません。

各条件を見てみると、

  • iが0と3のときはXにi(0もしくは3)
  • iが1のときはXに10
  • 2のときには20が足される
  • 最後にはXは33が入っている

ということになります。

関数とその呼び出し

女性 フリーランスエンジニア


ここまでで、代表的なVBの処理を作成することができました。しかし、このままではせっかく書いた処理も使うことができません。

そこで次は今書いた処理を関数にして、外から「変数Xにこの計算をした結果を知りたい」というときに呼び出して使用できる形にします。

例文

  1. Function sample(ByVal Y As Integer) As Integer
  2. Dim X As Integer = 0
  3. For i = 0 To 3
  4. If i= 1 Then
  5.   X = X + Y
  6. ElseIF i= 2 Then
  7.  X = X + 2*Y
  8. Else
  9. X = X + i
  10. End If
  11. Next
  12. sample = X
  13. End Function

まず長くなった1行目です。

  • Function

これは関数を定義するための命令です。最後は必ずEnd Functionで終わる必要があります。

  • sample

関数の名前です。

  • (ByVal Y As Integer)

これは定義する関数を呼び出すときに同時に指示したい変数を指定する内容です。

ByValはおまじないだと思ってとりあえず書く、程度に思ってください。

Yは指定したい変数の名前で、その中身を整数に限定しています。この部分は必ず括弧でくくってください。

  • As Integer

この部分は今までと同様整数に限定するという命令ですが、いったい何を整数に限定しているのでしょうか。

これはこの関数が計算を終えたときに返してくる処理結果を整数に限定する、という意味の命令になります。

それ以外の部分はほぼ前出のものと同一です。

ただし、前出ではX=X+10だったものがX=X+Y。

計算の中身を、関数を呼び出す際に指定する変数で変更できるという形になっています。

最後にsample=Xの部分で、計算結果であるXを関数の名前に代入してあげましょう。

そうすることで、この関数の戻り値と呼ばれるものを設定します。

1行目の最後の整数限定の命令はこの部分の限定だった、ということです。


入出力処理



ここでいう入出力とは、標準入出力というWindowsのコマンドプロンプト画面のことを指しています。

ExcelのセルやVisual Studioで作成した画面での入出力は、ここで上げる例の一部分を変更しなければなりません。

入出力とは文字通り、数字や文字を入力してなにがしかの処理をした結果を表示する、という処理のことです。

前出のものは関数になったものの、まだ外から呼び出しもできず結果も表示できません。そこで、次のように変更します。

例文

  1. Dim input As Integer
  2. Dim output As Integer
  3. input = Console.ReadLine()
  4. output = sample(input)
  5. Console.WriteLine(input)
  6. Function sample(ByVal Y As Integer) As Integer
  7. ά
  8. End Function

最初2行の説明は省きます。

3行目の命令でコマンドプロンプトに入力された文字を読み取ってinputに入れる、ということをしています。

この際、入力されたものが数字ではなく文字である場合、エラーとなってしまうのです。

そしてそのinputを先ほど作成した関数に渡してあげると、例のような書き方で処理結果(戻り値)をoutputに入れることができます。

その結果を5行目の処理でコマンドプロンプトに表示する、という内容です。


VBで処理を構築する

自宅でパソコンを使う若い男


ではこれまでを踏まえて、実際に動くプログラムにまとめましょう。いくつか新しい要素も出てきますので都度解説します。

例文

  1. Module sampleModule
  2. Sub Main()
  3. Dim input As Integer
  4. Dim output As Integer
  5. input = Console.ReadLine()
  6. output = sample(input)
  7. Console.WriteLine(input)
  8. End Sub
  9. Function sample(ByVal Y As Integer) As Integer
  10. ά
  11. End Function
  12. End Module

1行目のModuleとはVBプログラムの大枠のようなものだと思ってください。

大まかにいえば「これはVBのプログラムですよ」、と宣言しているようなものです。

そのModuleの名前がsample Moduleとしています。

これは単なる名前ですが、このプログラムを実行するときに指定する名前はこのModuleの名前なのです。

次に、Sub Main()の部分ですが、SubというのはFunctionの仲間になります。

異なる点としてFunctionは戻り値を返しますが、Subは戻り値を返しません。ただそれだけの違いです。

そのあとのMain()は、このModuleが呼び出されたときに処理される文字通りメインの関数、という意味の名称になります。

この中にいろいろな処理、そして自分で作った関数などを記述していくことになるのです。

ここで呼び出されていない関数は、どれだけ書いても使われることなく終わってしまいます。


おわりに

保険、カスタマーケア、サポート


以上で、本記事におけるVBの初歩解説は終わりです。

「動くプログラムは解ったけれども、実際にどう動かすのかの説明がない」と思う人もいるかもしれません。

ここからは実行環境によって変わっていきます。

現在はネット検索すればExcelでボタンを配置したGUIを作成して、というサンプルも簡単に見つかります。

その内容は本記事で説明したことを少しだけ応用したものなので、簡単に実装することが可能です。

調べながら実際に手を動かすことで、プログラミングを深く理解することができます。


SHIFTフリーランスは、SHIFTグループがプライムとして参画している独自案件をフリーランスエンジニア向けに紹介する唯一のプラットフォームサービスです。

エージェントによるサポートもありますので、ご利用を検討してみてはいかがでしょうか。