そもそも変数とは
変数とは
変数はVBAのみならずどんなプログラミングをしていく上でも絶対に必要なので、必ず覚えましょう。
しかし、VBAの変数は書き方に少し癖があるので 「あ、変数ってこんなものなんだ」 くらいで覚えればいいと思います。
変数とは 値を入れておく箱の様なもの とよく、表現されます。
これだけだと全くちんぷんかんぷんだと思うので、当ページで詳しく解説していきます。
変数を説明する前にセルに表示する値には型というものがあります。
この型も非常に大事なので、合わせて解説していきます。
表示する値の型とは
表示する値の型には複数ありますが、このページでは
・String型
・Integer型
この2種類のみに絞って解説していきます。
というのも、この2種類以外はあまり使う機会がないので、それ以上の使い方をしたい場合は検索すればすぐ出てくるのでググってみてください。
変数と値の型の関係性
変数を扱うためには値の型を知るということをお伝えしましたが、実は詳しく意識しなくても大丈夫だったりします。
後述しますが値の型はセルに表示された時点、メッセージボックスに表示された時点でエクセルによって勝手に決めてくれるからです。
(厳密にいうと違いますが…)
そして変数に値の型を指定する時にも、値の型を指定していなかった場合は勝手に値の型を決めてくれるのです。
ただ、それだと不都合があるので値の型を自分で決めておく必要があるということになります。
String型とInteger型
【表示する値の型とは】の項でもお伝えしましたが、値の型の主な種類は String型 Integer型 になります。
Stringとは
Stringとはセルに表示されている値を文字列として扱いたい時に使用します。
この文字列とは主に文字のことを指しますが、たまに数字を数字としてではなく文字として扱いたいとなる時が出てきます。
この時に数字に対してStringを指定してあげると数字ではなく、文字として扱える様になります。
ここまでではよく分からないと思いますが、後述しますので読み進めてください。
文字列とは
今までの解説でも当たり前の様に「文字列」「文字列」とお伝えしてきましたが、この文字列に今まで何度も書いてきた値の型が関係してくるのです。
セルに表示されている値を文字列として扱いたいというのは、ひらがな・カタカナ・漢字・英語等の文字と呼ばれるものが主に文字列と言います。
そして主に1,2,3,4,5等の数字は数値となります。
しかし1、2、3、4、5等の全角の数字は文字列となるので注意しましょう。
Integerとは
Integerとはセルに表示されている値を数値として扱いたい時に使用します。
この数値とは当たり前に使用している
1,2,3,4,5,6,7,8,9,0
これらが数値となります。
これらをプログラミング上で何も指定しなかった場合は、もしかしたらプログラム上で
「数字が入力されているけど文字列にしよう」
とされてしまうことがあるかもしれません。
(今までそんなことはありませんでしたが)
そういったことにならない様に、これはちゃんと数字だよというのを明示的にするのが Integer になります。
ですのでひらがな、カタカナ、漢字、英語は数値として扱うことができないのでInteger型に指定することができず、エラーになります。
数字と数値
よく僕の解説の中で「数字」と「数値」と出てくることがありますが、一応僕の中でのルールがありまして、
・数字は「1,2,3,4,5,6,7,8,9,0」などの純粋な数字
・数値はセルに表示された値がちゃんと数字だよ、
と明示的に表した型の事として書いています。
数値については、最初のうちは分からないと思うのですが変数に慣れてくると分かるので今分からなければ読み進めていただき、慣れてきた頃に思い出してみてください。
※上記の様に「数字」と「数値」を使い分けるようにしていますが、間違えている場合があります。
その場合はご容赦ください。
変数の値を入れておく箱とは
では、表示する値の型については解説しましたので本題の変数について解説します。
よく言われる値を入れておく箱というものは、
段ボールAが一つあり、
その段ボールにBというボールを入れます。
そうしたら段ボールAに入れたBボールは段ボールAの中で無限に増殖します。
(よくわからないだろうけど、そういうものだと思ってください)
段ボールAの中に入っているBボールはいつでも好きな時に使えます。
使い方はBボールを使う、ではなく 段ボールAを使う
と命令すると段ボールAの中に入っているBボールが使われる
ということになります。
プログラミングの変数を解説すると上記の様なイメージです。
上記をプログラミング風にすると以下の様になります。
値の型は数値型で解説します。
boxという名前の箱(変数)を作成します。
boxという箱(変数)に「1」という数字を入れます。
この「1」は数値なのか文字列なのか分からないのでInteger型(数値型)を指定します。
そうしたらboxに入れた「1」はいつでも好きな時に呼び出せます。
しかし、この「1」を使いたいときはboxを呼んであげないと使うことができません。
なのでこの「1」を使いたい時はboxを呼び、boxが呼ばれると「1」が使われるということになります。
文章だけの解説では分かりづらいので実践で説明していきます。
変数はプログラミングをしていくうえで避けては通れないので、積極的に使って身体に覚えこませましょう。
文字列型の変数を作成して、A1セルに変数の値を表示
今回の目標1:A1セルに変数に格納した「Hello」を表示する
実践
1.開発タブのvisual Basic Editorをクリックしましょう
(Alt + F11のショートカットでも表示させられます)
2.メニューバーの挿入タブをクリックしましょう
3.挿入メニュー内の標準モジュールをクリックしましょう
4.エディターの1行目にsub 文字列型変数()と入力し、入力が完了したらエンターを押しましょう
5.そうしたら3行目にEnd Subと自動で入力されます
6.ここまではダイアログボックスの回でもやったので問題ないですね
7.今回は1行で終わるプログラムではないので間違えない様に気を付けてくださいね
8.2行目に Dim 文字列変数 As String と入力してください
9.3行目に 文字列変数 = “Hello” と入力してください
10.4行目に Range(“A1”) = 文字列変数 と入力してください
11.全てを入力し終えたら 1行目に Sub 文字列型変数()、2~4行目はプログラミング内容、5行目に End Sub となっているはずです
12.入力が完了したらツールバーの再生ボタン「▶」をクリックしてください
再生ボタンはメニューバーの「挿入」の右斜め下にあります。
(見つけられない場合はショートカットキーのF5キーで実行してください
13.A1セルに「Hello」と表示されれば成功です
解説
変数に”Hello”という文字列を格納し、それを呼び出すというプログラムです。
では詳しく解説していきます。
Dim 文字列変数 As String
2行目の
Dim 文字列変数 As String
の 「Dim」とは、ExcelVBAで変数を作成する時に必ず必要となってくる命令なので、変数を作成する時には必要なもの、程度に思っておいてください。
「文字列変数」とは変数を格納するための箱になります。
【変数の値を入れておく箱とは】の項でお伝えした「段ボールA」や「box」がこれにあたります。
「As」とは、「Dim」と同じくExcelVBAで変数を作成する時に必ず必要となってくる命令ですので、変数を作成する時には必要なもの、程度に思っておいてください。
「String」は【String】の項でお伝えしました通り、変数を「文字列」として扱うための型になります。
これらを繋げて書くことで今回は【文字列変数】を変数として扱える様になる、ということです。
文字列変数 = “Hello”
3行目の 文字列変数 = “Hello” の 「文字列変数」とは、先ほどもお伝えした通り、変数を格納するための箱になります。
「=」は、Range()やCells()のページでもお伝えした通り、右側にある値を左の値に表示させる、というものになります。
※ただし今回は3行目では表示させないので、右側の値を左側の変数に格納する、ということになります。
”Helo”とは、表示させたい値です。
【変数の値を入れておく箱とは】の項でお伝えした「Bボール」や「1」がこれにあたります。
これらを繋げて書くことで【文字列変数】いう変数に、「Hello」という文字列を格納したということになります。
Range(“A1”) = 文字列変数
4行目の Range(“A1”) = 文字列変数 は 【文字列変数】に格納されている「Hello」をRange(“A1”)に表示させる、ということです。
String型変数のまとめ
String型は最初のうちは使うことはほぼ無いと思いますが、いずれ長いプログラミングを書いたり、同じ値を何度も使いたい時のショートカットに使います。
今はショートカットと言われてもよく分からないと思いますが、繰り返しRange(“A1”)の値を使いたい時にRange(“A1”)をsample等としておくと、呼び出しが非常にスムーズになるということです。
では、続けてもう一つの変数もやっていきましょう
数値型の変数を作成して、B2セルに変数の値を表示
今回の目標2:B2セルに変数に格納した「100」を表示する
ここから実践
1.開発タブのvisual Basic Editorをクリックしましょう
(Alt + F11のショートカットでも表示させられます)
2.メニューバーの挿入タブをクリックしましょう
3.挿入メニュー内の標準モジュールをクリックしましょう
4.エディターの1行目にsub 数字変数()と入力し、入力が完了したらエンターを押しましょう
5.そうしたら3行目にEnd Subと自動で入力されます
6.ここまではダイアログボックスの回でもやったので問題ないですね
7.2行目に Dim 数字変数 As Integer と入力してください
8.3行目に 数字変数 = 100 と入力してください
9.4行目に Range(“B2”) = 数字変数 と入力してください
10.全てを入力し終えたら 1行目に Sub 数字変数()、2~4行目はプログラミング内容、5行目に End Sub となっているはずです。
11.入力が完了したらツールバーの再生ボタン「▶」をクリックしてください 再生ボタンはメニューバーの「挿入」の右斜め下にあります。
(見つけられない場合はショートカットキーのF5キーで実行してください
12.B2セルに「100」と表示されれば成功です
解説
変数に100という数字を格納し、それを呼び出すというプログラムです。
では詳しく解説していきます。
Dim 数字変数 As Integer
2行目の Dim 数字変数 As Integer はStringの解説でもした通りなので割愛します。
「Integer」は【Integer】の項でお伝えしました通り、変数を数字として扱うための型になります。
数字変数 = 100
3行目の 数字変数 = 100 の 「数字変数」とは、先ほどもお伝えした通り、変数を格納するための箱になります。
「=」は、Range()やCells()のページでもお伝えした通り、右側にある値を左の値に表示させる、というものになります。
※ただし今回は3行目では表示させないので、右側の値を左側の変数に格納する、ということになります。
これらはStringの項と一緒になります。
ところで気付いた方もいるかもしれませんが、右側の値が「100」と書かれていてダブルクォーテーションで囲まれていません。
String型の項ではHelloを”Hello”とダブルクォーテーションで囲っていました。
この違いについて解説していきます。
ダブルクォーテーション
ダブルクォーテーションはどんなプログラミングでも文字列を使う場合には必ず必要になってきますので、必ず覚えましょう。
まず大前提として大半のプログラミングで日本語を表示させたい場合はダブルコーテーションで囲わなくてはいけません。
これをVBAで解説すると
Range(“A1”) = “こんにちは”
は問題なくA1セルに「こんにちは」と表示されます。
しかし
Range(“A1”) = こんにちは
だと、絶対にエラーになります。
詳しいことは省きますが、そういうものだと思ってください。
ただし数字は違っていて、
Range(“A1”) = 100
Range(“A1”) = “100”
のどちらでもエラーになりません。
この場合は100は数値、”100″は文字列として扱われます。
同じ「100」なのに何が違うの?と思われるかもしれませんが、これは足し算をするとよくわかります。
例えば
Range(“A1”) = 100 + 100
はA1セルに表示される値は200となります。
しかし
Range(“A2”) = “100” + “100”
はA2セルに表示される値は100100となります。
これは計算される「100」が数値か文字列かということで変わってきます。
A1セルに表示された200は100と100が数値として扱われるので単純な足し算をしてくれたということです。
A2セルに表示された100100は100と100が文字列として扱われるので100+100ではなく、100と100が連続して表示されるということになります。
Range(“B2”) = 数字変数
4行目の Range(“B2”) = 数字変数 は 【数字変数】に格納されている「100」をRange(“B2”)に表示させる、ということです。
Integer型変数のまとめ
Integer型は多分ExcelVBAの変数を使用していくうえで最も頻繁に使う変数の型なはずです。
あっちの値とこっちの値を計算したい、
あっちの値とそっちの値を計算したい、
今A1セルに表示されている値を後で使いたいけどA1セルは別の計算をしてしまうから、A1セルの値をどこか別のところにおいておきたい、等といった様々な使い方ができます。
String型も大事ですが、まずはこのInteger型を最優先で覚えることをお勧めします。
今回のコード一覧
自分でコードを書いてエラーが発生してしまったら、以下のコードと比較してエラーを解消しましょう。 文字列型(String)
Sub 文字列型変数() Dim 文字列変数 As String 文字列変数 = "Hello" Range("A1") = 文字列変数 End Sub
数値型(Integer)
sub 数字変数() Dim 数字変数 As Integer 数字変数 = 100 Range("B2") = 数字変数 End Sub
どうしてもエラー箇所が分からないという方がいましたら、2つのテキストの差異を視覚的に教えてくれるWinMergeというソフトがあるので、それを使って上記のコードと自身が書いたコードを比較してみることをお勧めします。
WinMerge: https://winmerge.org/?lang=ja
まとめ
このページでは変数について解説をしました。
色々と寄り道をしてしまい、最終的なコードに辿り着くまでかなり大変になってしまいました。
しかし、それほどまでに変数は重要なものになってくるので一度だけでは理解しきれないと思いますが繰り返し見て、実際にコードを書いてみて体に変数を染み込ませることが大事です。
長いコードを書いていくと変数が100個では収まらなくなる時があります。
その時に混乱しない様にするためにも早めに慣れることをおススメします。
このページについて
何故プログラミングを勉強するのか
何故プログラミングを勉強するかは正直に言って、人それぞれです。
しかし、一つだけ言えることは プログラミングは一度覚えてしまえば、一生使えるスキルであり非常に高額な報酬を得やすい職種ということです。
更に以下の様なメリットもあります。
・パソコンそのものに非常に強くなる
・スマートフォンにも強くなれる
・デザインにも精通するスキルが身に付けられる
・インターネットの知識が付けられる
・論理的な考え方を身に付けられる
・上級とは言えずとも中級レベルのスキルを持っていれば年収500万円は簡単に得られる
・年収1000万円以上も目指せる
・一つの言語をある程度覚えたら応用して、様々な言語を扱えるマルチな道へ進むことができる
・プログラマと呼ばれる開発者以外にもディレクター、セキュリティ担当、ホワイトハッカー等の道も考えられる
・一つの言語を極めればその権威となれる
と、プログラムはこれからの時代に即したかなりマルチなスキルを身に付けることができます。
現在はプログラミングスクールもたくさんあるので、独学ではなくしっかりと学ぶことも可能です。
プログラミングスクールは数ヵ月で数十万円しますが、一時的に払ったとしてもその後1年でも開発の現場でそのスキルを伸ばしていけばあっという間にもとをとり、更に高額の報酬を得やすくなるので非常にプログラミングスクールはおススメです。
このページがおススメな方
このページは
・プログラミングを全くやったことがない
・プログラミングをやりたいけど何からやればいいか分からない
・仕事の業務を効率化したい
といった方向けの記事です。
Excel VBAを書くための準備から、基本的なコーディング、応用レベルの使い方をなるべく噛み砕いて全くの初心者でも少しずつステップアップできる内容になっています。
VBAをおススメする理由
特に今後プログラミングを覚えていきたいという方にVBAは非常におすすめです。
その理由は
・開発環境を構築する必要がない
・コードが癖はあるけどシンプル
・プログラミングをするためのエディターは専門のものが用意されている
・エクセルという視覚的に表示されるものが多いので、達成感をすぐに味わえる
という観点から僕はVBAをお勧めしています。
プログラミングという言語は沢山あって、あっちはこれが得意でこっちはこれが得意でといった感じに比較することは多いかと思いますが、
コードが シンプル! かんたん! 分かりやすい! 結果をすぐ得られる!
と、いいことずくめなのでプログラミング比較で迷っている方はとりあえずまずは、の感覚でいいのでVBAをやってみてください。
(その代わり遅いんですけどね…)
VBAのメリット・デメリット
ただVBAにはできることへの限度、速度の面から見て他と劣ることがどうしてもあります。
なので普段のエクセルの業務を効率化したいという方は本格的に勉強していただくのをおススメします。
しかしいずれ別のプログラミング言語に挑戦したいという方は、プログラミングの基礎部分を固めるという意味で勉強するのがいいかと思います。
プログラミング言語にもそれぞれ難易度があり、
・C言語、java、objective-cなど学習コストが高く難易度も高いもの
・PHP、Python、Rubyなど学習コストは中程度だが初心者は大体挫折するもの
・JavaScriptの様なHTML、CSSを知っておかないとできないようなもの
と難易度は様々です。
そんな中でExcel VBAは他の言語では表示させるまでに複数行かかるものを1行で書けたり、シンプルなコードでマウス操作やキーボード操作までできるので視覚的にも楽しいし、エラー個所もここがエラーだとすぐ分かる様になっているのでプログラミング初心者でも挫折が少なく覚えられるはずです。
エクセルのバージョンと歴史
因みにエクセルにも種類というかバージョンがあり、メジャーなバージョンでは
・2003
・2007
・2010
・2013
・2016
・2019
とありますが、僕はOffice2016を使用していますので、それをベースにお伝えしていきます。
VBAとマクロの違い
VBAを勉強しようとすると最初に疑問に思うのが、VBAとマクロの違いです。
この違いが分からなくてどっちを勉強すればいいんだろう? 何が違うんだろう?
と、それだけで調べるのが面倒くさくなって勉強するのをやめてしまうかもしれません。
結論から言ってしまうと VBAとマクロは一緒 です。
正確に言うと色々と違う点が多々あるのですが、ぶっちゃけそんなこと気にして違いを調べるのは時間の無駄です。
なので当サイトの中では同じものとして認識しておいていただければ大丈夫です。
本格的にVBAを学ぼうと思った時に調べるくらいでいいと思います。
とは言ったもののざっくりと違いを述べると
・VBAは ・VBAはマクロを実行するために記述されるプログラム
・マクロは ・自動化した操作を総称したもの
といったくらいの違いです。
なので、言葉であらわすのであれば
・プログラミングで作成されたものが実行されればそれはマクロ
といった感じです。
因みにVBAやマクロの他にVBやVBS、VBE、VB.netといったものもあるので簡単に解説しておきます。
VBとは
VBはVBAよりもかなり複雑なプログラミング言語です。
「.exe」や「.dll」形式のファイルを開発するときに使われる言語で、非常に難しいプログラミング言語です。
正式名称は ・Visual Basic
VBSとは
VBSはVBをまねて作られたスクリプト言語と言われています。
スクリプト言語については解説すると長くなるので本ページでは解説しません。
VBSは「.vbs」ファイルと呼ばれるものを作成すれば1行で簡単にプログラムが作れてしまったりもします。
以下のページで解説しているダイアログボックスもVBAだと、
Sub ダイアログボックスを表示() MsgBox “こんにちは” End Sub |
3行で構成されるプログラムが
MsgBox “こんにちは” |
だけで書けるという非常にシンプルな言語でもあります。
VBAもそうですが、使い方次第でパソコンを自動操作できる様になるので、簡単だけど複雑なことまでできる言語でもあります。
正式名称は ・Visual Basic Scripting
VBEとは
VBEとは、VBAを書くためのエディタのことです。
当ページでも毎度解説している Sub ○○() ~中略~ End Sub これらを書いているエディタがVBEです。
正式名称は ・Visual Basic Editor
VB.netとは
VB.netとは .NET Framework(Windowsアプリケーションの開発環境)というフレームワークを使う時に用いられるプログラミング言語です。
フレームワークについては、あまり詳しく解説しませんがざっくり言うとプログラミングで何かを作る際に効率的に作れるようにしてくれる補助アイテムのようなものです。
なのでVB.net単体で何かを作るということはほぼないと思っていただいて大丈夫です。 (筆者もVB.net Frameworkは使用したことがないので詳しくは分かっていないです)
VBA、VB、VBS、VBE、VB.netについてまとめ
それぞれについて簡単に解説しましたが、実際にプログラミング言語として用いられるのは
・VBA
・VB
・VBS
の3つです。
どれも特徴や癖などがありますが、本ページではVBAを解説し、VBAを学びたいと思っている方が見ていただいているかと思うのでVBA以外については今は意識しなくていいかと思います。
いずれ、ステップアップして別の言語を学ぼうと思った時に他の言語と比較してみることをおススメします。
コメント