EXCEL、VBAプログラミング入門(4)~セルの値を取得する~

以下は当記事に関連する動画です。本動画に関連する動画はすべてニコニコチャンネルにて閲覧可能です。
https://ch.nicovideo.jp/ai-light

本講座のシリーズは以下にて閲覧可能です。
https://www.nicovideo.jp/series/231329

本文に関連する動画は以下にて閲覧可能です。

●目次
はじめに
プログラムのコードを表示
プログラムのコードの説明
プログラムのコメント行 ( ‘ )
プログラムのステップ実行
変数のデータ型の定義
プログラムの構成
セルのデータの取得と変数への代入
変数のデータを表示
文字データの結合 (“&”)
プログラムの動作の確認
セル ”B3” に “1”を入れる
セル ”B3” に “11”を入れる
セル ”B3” に “111”を入れる
まとめ

●はじめに
それでは、Excel VBAプログラミングについて、ご説明をさせていただきたいと思います。

前回の入門3講座では、プログラムの操作ボタンを作って、そのコードの中にプログラムを挿入するという話をさせていただいたのですが、いよいよプログラムの中身について、以下に、順次、ご説明をさせていただきたいと思います。

前回に説明のために作成したボタンを削除したいと思います。次のExcel画面は「開発」タブ→「デザインモード」タブがONの状態になっていますが、この状態で「ボタンテスト」ボタンを選んで、キーボードの「デリート(Delete)」ボタンを押すと「ボタンテスト」ボタンが消えますので、ここで一旦消しておきます。

●プログラムのコードを表示
「ボタン(1)」を右クリックして、「コードの表示」を押してもらうと、右図のようにプログラムのコードが表示されます。

●プログラムのコードの説明
★プログラムのコメント行 ( ‘ )
プログラムのコードで、シングルコーテーションマーク ( ‘ ) の入っているところはプログラムのコメントです。コメントなのでプログラムの動作とは直接関係がなくメモのようなものです。用途としては、プログラムの内容を説明するために書いたり、以前に書いたプログラムを残しておくために使用したりします。
次のプログラムのコードでは、いろいろなコメントが書かれていますが、コメントはプログラムとしては動作しません。例えば、次のコードで「Call」を 「’ Call」としてコメントにするとプログラムではなくなります。

次に、「ワーク」とRange(“b3”)のところで、シングルコーテーション ( ‘ ) を消して、プログラムとして動かしてみたいと思います。

★プログラムのステップ実行
プログラムのコードで、灰色のところを押すと、コードに「茶色のマーク」が付いて、プログラムが一時停止します。プログラムが具体的にどのような動作をしているのかを確認するために、ステップ実行を活用します。ちなみに、他のプログラム開発ツールでも、同様の機能があることが多いです。

プログラムを一時停止して、プログラムをステップ毎に実行することを「ステップ実行」といいます。「ステップ実行」をするためには、「デバッグ」タブ→「ステップイン」タブを押します。または、キーボードのF8 (ファンクションの8) ボタンを押します。

★変数のデータ型の定義
ここで、プログラムを見ていただきたいと思います。次の左図では、変数「ワーク」のデータ型の定義がされていないので、右図のように、変数「ワーク」のデータ型をString (文字列型) として定義します。変数とは、プログラム中で一時的にデータを保存しておく領域です。

★プログラムの構成
次の図に示すように、プログラムは上から順番に実行されていきます。今 cmd1_Click というプログラムが実行されています。このPrivate SubからEnd sub までがプログラムの中身です。ここで、シングルコーテーションマーク ( ‘ ) 付きの行はコメントです。このプログラムでは、実際に動くプログラムを書いているのは実線で囲んだ三行だけです。

★セルのデータの取得と変数への代入
次の右図のプログラムコードで、Range (“b3”).Value は、左のExcel画面のセル”B3”の値のことで、セル”B3”の値を取得します。次の右図では、セル”B3”の値はブランク (” ”) です。これを受けて、右図のプログラムコードの画面で、Range (“b3”) のところにカーソルを持ってくると、Range (“b3”).Value=” ”と表示されます。セル“B3”にはまだ、データが何も入っていないことを示しています。
黄色の部分はこれからプログラムを実行するという意味です。ですから、
ワーク = Range (“b3”).Value
の部分が黄色になっている段階ではまだ、この行は実行されていませんので、Range (“b3”).Value=” ”となります。
この行が実行されるとRange (“b3”).Value=” 3”となります。

また、
ワーク = Range (“b3”).Value
のイコール (“=”) は何かといいますと、Range(“b3”)の値を変数「ワーク」に一時的に保存することです。イコール (“=”) とは代入することで、イコールの右側の値を左側の変数に代入することを意味します。

★文字データの結合 (“&”)
その次に、& (AND) は、文字を結合することです。また、ダブルコーテーション (“ ”) で囲まれた “1” は、1という文字が入っているという意味です。従って、「ワーク & ”1”」は、変数「ワーク」に入っている文字と文字の ”1” を結合することです。今、変数「ワーク」には何も入っていませんので、「ワーク & ”1”」は、何もないところに ”1” を結合することであり、その結果は ”1” となります。

●プログラムの動作の確認
以上で、セルの値を取得するプログラムのコードについて、その要点を解説しました。ここで、実際に、次のプログラムを動かしてみたいと思います。動かすプログラムのコードは、次のとおりです。

プログラムコード プログラムの説明
Dim ワーク As String 変数「ワーク」のデータ型を文字列型として定義する
ワーク= Range(“b3”).Value セル”B3”の値を変数「ワーク」に代入する
Range(“b3”).Value =ワーク & “1” 変数「ワーク」と文字 ”1” を結合して、セル”B3”に代入する。

以下に、このプログラムを実際に動した結果をまとめました。ボタン「1」を3回押して、表示場所に“111”と表示される動きを順を追って確認したいと思います。

★プログラムの動作 セル ”B3” に “1”を入れる
1回目のボタン「1」をクリックします。初めに、配列 ”B3” の値はブランク(” ”)であり、Range(“b3”).Value = ” ”です。
一方、ワークの値は、配列 ”B3 ” の値を代入しますので、初めは何も入っていません。即ち、ワーク = ” ” です。
次に、プログラム「Range(“b3”).Value =ワーク&”1”」を実行すると、ワーク(“ ”) と ”1”を結合して ”1” となり、この値 ”1” がセル ”B3” に入ります。

★プログラムの動作  セル ”B3” に ”11” を入れる
2回目のボタン「1」をクリックします。ここで、配列 ”B3” の値は ”1” であり、Range(“b3”).Value = ”1”です。
一方、ワークの値は、配列 ”B3 ” の値を代入しますので、ワーク = ”1 ” となります。
次に、プログラム「Range(“b3”).Value =ワーク&”1”」を実行すると、ワーク(“1”) と ”1” が結合して ”11” となり、この値 ”11” がセル ”B3” に入ります。

★プログラムの動作  セル ”B3” に ”111” を入れる
3回目のボタン「1」をクリックします。ここで、配列 ”B3” の値は “11” であり、Range(“b3”).Value = “11” です。
一方、ワークの値は、配列 “B3” の値を代入しますので、ワーク = “11” となります。
次に、プログラム「Range(“b3”).Value =ワーク&”1”」を実行すると、ワーク(“11”) と ”1” が結合して “111” となり、
この値 ”111” がセル “B3” に入ります。

●まとめ
以上をまとめますと、プログラミングの基本動作は、何かしらのinputデータを取得して、そのデータに処理を加えて、最後に出力をします。

今回の処理では、次の図に示しますような動作になっています。
①セルの値を取得する
②ワークという変数に値を一旦保存する。
③「ワーク」の値と ”1” を結合したものをRange(“b3”).Valueに入れて、その結果をセル(“B3”)に表示する。

ここで、Rangeというのはエクセルのプログラムを作成していると、よく出て来る関数ですので、よく確認していただきたいと思います。

以上、3行のプログラムを解説させていただきましたがいかがでしたでしょうか。プログラムの楽しさを実感できましたでしょうか。次回以降ではさらに、プログラムの解説を進めていきますので、ぜひ、楽しみにしていて下さい。


弊社は、主に中小企業様向けの業務システム開発ホームページ制作パソコンサポートコンサルティングなど、ITに関する様々なサービスを格安で提供しております。
特に小規模な業務システム開発の分野では、主にAccess(アクセス)を利用した柔軟で効率的な開発を得意としており、関西でダントツの実績があります。

業務システム開発に関しては、以下のような内容で対応しております。
・顧客管理などの単機能なシステムは20万円~50万円が多い。
・受注から入金まで業務全体システムで100万円~350万円ぐらいが多い。
・Access(アクセス)-SQLserverで大規模システム開発は350万円~1500万円が多い。

詳細は、Access(アクセス)、Excel(エクセル)、WEBサイト製作による小規模システム開発のページをご参考ください。

大阪商工会議所からの推薦を受けて、中小企業庁運営の中小企業支援事業に専門家として登録されました。
通称ミラサポ。3回まで無料でのコンサルティングが可能です。ご興味がある方はご連絡ください。
https://www.mirasapo.jp/


(近畿大学にて非常勤講師も務めたバリバリの技術屋が経営する会社)

Access(アクセス)Excel(エクセル)SQL server バーコード Webシステムを使った業務システムのシステム開発の無料相談を受付中

株式会社 アイライト 担当:内藤 響(Naito Ko)
〒550-0005 大阪市西区西本町1丁目5番9号 日清ビル 5F
(四つ橋線 本町駅 24番出口すぐ)
まずは、メール・電話でご相談ください。
TEL : (06) 6599-8890 E-mail : info@ai-light.com
お電話が混んでいる場合が多いので、つながりにくい場合は
TEL : (06) 6535-5117までお願いします。


株式会社アイライト公式HP
https://www.ai-light.com/
(Access・Excelでシステム開発会社を探されている法人様はこちら)

無料から学べる講座
https://www.ai-light.com/itkeiei/

ITでお困りのことがございましたら、まずはご相談(コンサルティング)
https://www.ai-light.com/itconsulting.html

格安ホームページ制作所
https://www.ai-light.com/hp2

YouTubeチャンネル(無料動画配信中)
https://www.youtube.com/user/ailightcom

ニコニコチャンネル(月額固定で見放題)
http://ch.nicovideo.jp/ai-light