#3 【Excel VBA入門】~変数を使ってみよう Dim String Integer~

ExcelVBA
このページは ・プログラミングを全くやったことがない ・プログラミングをやりたいけど何からやればいいか分からない ・仕事の業務を効率化したい といった方向けの記事です。 Excel VBAを書くための準備から、基本的なコーディング、応用レベルの使い方をなるべく噛み砕いて全くの初心者でも少しずつステップアップできる内容になっています。 特に今後プログラミングを覚えていきたいという方にVBAは非常におすすめです。 その理由は ・開発環境を構築する必要がない ・コードが癖はあるけどシンプル ・プログラミングをするためのエディターは専門のものが用意されている ・エクセルという視覚的に表示されるものが多いので、達成感をすぐに味わえる という観点から僕はVBAを非常にお勧めしています。 プログラミングという言語は沢山あって、あっちはこれが得意でこっちはこれが得意でといった感じに比較することは多いかと思いますが、コードが シンプル! かんたん! 分かりやすい! 結果をすぐ得られる! と、いいことずくめなのでプログラミング比較で迷っている方はとりあえずまずは、の感覚でいいのでVBAをやってみてください。 (その代わり遅いんですけどね…) 因みにエクセルにも種類というかバージョンがあり、メジャーなバージョンでは 2003 2007 2010 2013 2016 2019 とありますが、僕はOffice2016を使用していますので、それをベースにお伝えしていきます。
スポンサーリンク

そもそも変数とは

変数とは

変数は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のショートカットでも表示させられます) 開発タブが表示されていない方は【Excel VBA超初心者】~開発環境の準備~を参考にしてください
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」を表示する

integer

ここから実践

1.開発タブのvisual Basic Editorをクリックしましょう (Alt + F11のショートカットでも表示させられます) 開発タブが表示されていない方は【Excel VBA超初心者】~開発環境の準備~を参考にしてください
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
WinMerge - You will see the difference…
WinMergeは、オープンソースのWindows用比較・マージツールです。WinMergeは、フォルダとファイル両方が比較でき、理解しやすく扱いやすいテキスト形式で差異をビジュアルに表現します。

まとめ

このページでは変数について解説をしました。 色々と寄り道をしてしまい、最終的なコードに辿り着くまでかなり大変になってしまいました。 しかし、それほどまでに変数は重要なものになってくるので一度だけでは理解しきれないと思いますが繰り返し見て、実際にコードを書いてみて体に変数を染み込ませることが大事です。 長いコードを書いていくと変数が100個では収まらなくなる時があります。 その時に混乱しない様にするためにも早めに慣れることをおススメします。

コメント