EXCEL、VBAプログラミング入門14~型変換~第1回目

今回は、EXCEL、VBAプログラミングの第14回目で、型変換について説明をする第1回目です。

今回は、以下のことについて解説を行っています。
1)はじめに
2)CDbl関数
3)型変換を行わずに「+」を行った場合

1)はじめに
本EXCEL VBA講座では下図の計算機システムを制作する過程を通じて、EXCEL、VBAのプログラミングについて解説を行っております。計算機システムとは、言葉で何となく想像は付くかと思いますが、要するに簡単な電卓です。

図1.計算機システム

現在は、「+」ボタンが押された際のプログラム処理について解説を行っています。「+」ボタンが押された際には、下図の通り「四則演算」関数が呼び出されます。

図2.「四則演算」関数

前回までで「四則演算」関数内のSelect Case文について解説を行いました。今回は、Select Case文内の処理である
Worksheets(“sheet1”).Range(“b3”).Value
= CDbl(一時記憶) + CDbl(Worksheets(“sheet1”).Range(“b3”).Value)
から解説を行います。

2)CDbl関数
CDblは、型変換を行う関数で、文字型を数値型に変換します。
上の式の
CDbl(一時記憶)
部分ですが、まずは「一時記憶」変数がどのように定義されているかを確認します。「一時記憶」にマウスのカーソルを合わせてマウスの右クリックでメニューを表示し、「定義」を選択すると下図の通り、「一時記憶」変数が定義されている箇所に移動します。

図3. 「一時記憶」変数の定義

図3の通り、windowsのタイトルを確認すると、
Public 一時記憶 As String
は、「Modue1」内で定義されていることが確認できます。また、画面の左側のプロジェクトウィンドウを確認すると、標準モジュール内で定義されていることも確認できます。

さらに、「一時記憶」変数は文字型として定義されていることが分かります。

「一時記憶」変数は、前回に入力した数値が入っています。
例えば、
10+20
という演算を行う時に、
10+
と入力した「+」ボタン処理にて、「10」という値が「一時記憶」変数に入っています。

今回の処理では、さらに
10+20+
と入力した処理に該当します。「20」という数値が「図1.計算機システム」のB3セルに入力されている状態です。その状態で「+」ボタンを押すと、
Worksheets(“sheet1”).Range(“b3”).Value
= CDbl(一時記憶) + CDbl(Worksheets(“sheet1”).Range(“b3”).Value)
の演算が行われます。

その際に
10+20
という計算を行う訳です。足算の演算を行うには、「10」や「20」が文字型ではなく数値型である必要があります。

つまり、「一時記憶」変数はそもそも文字型ですから、それを数値型に変えるのがCDbl関数の役割です。

実際に処理の動きを確認します。処理の動きを確認する場合には、プログラムコードを記載している左側の部分をクリックすると、下図の通り、茶色の丸が表示されます。

図4. ブレイクポイントの設置

この茶色の部分がブレイクポイントとなります。ブレイクポイントを設置すると、この部分で処理を止めることが出来ます。その後、ステップ実行にて1行づつコードを稼働させることによってプログラムがどのように稼働しているかを確認することができます。

ブレイクポイントを設置した灰色の部分をインジケータバーと呼びます。

10と入力後に「+」ボタンを押すと、下図の通り、「四則演算」関数が実行されます。

図5. 足算処理「10+」

ブレイクポイントで処理が止まった後は、「ステップ実行」機能を使って、プログラムを1行づつ稼働していきます。下図の通り、「デバッグ」を選択し、メニュー内の「ステップイン」を選択すると、処理が1行づづ行われます。

図6.ステップ実行

「ステップイン」の右側に「F8」と記載されていますが、これはショートカットキーです。毎回、「デバッグ」メニューから「ステップイン」を選択するのは大変ですので、ショートカットキーを使って、処理を1行進めたい場合には「F8」キーを押すと便利です。

「10+」と入力した時点では、「一時記憶」変数の値はブランクですので、
If 一時記憶 = “” Then
内が処理され「一時記憶」変数に「10」という値が代入されます。

ステップ実行を中止して、通常の実行モードに戻したい場合には、下図の通り、「継続」アイコンを押すと、処理が継続されます。

図7.処理の続行

10+まで入力した後にさらに、
20+
と入力します。

今度は、「一時記録」変数には「10」という値が入っていますので、
Worksheets(“sheet1”).Range(“b3”).Value
= CDbl(一時記憶) + CDbl(Worksheets(“sheet1”).Range(“b3”).Value)
の処理が行われます。

変数などに入っている値を確認するには、例えば、下図の通り、イミディエイトを使用します。

図8.イミディエイトの活用

イミディエイトのセクションが表示されていない場合にはVBAコードエディター上のwindowsメニューの「表示」から「イミディエイトウィンドウ」を選択すると表示されます。

ここで、
? Worksheets(“sheet1”).Range(“b3”).Value
と入力して「Enter」キーを入力すると、次の行に実際に入っている値が表示されます。

図8の通り、確かに「sheet1」シートの「b3」セルには「20」という値が入っていることが確認できます。

つまり
CDbl(一時記憶) + CDbl(Worksheets(“sheet1”).Range(“b3”).Value)
にて
10+20
の足算処理が行われ、その結果は
Worksheets(“sheet1”).Range(“b3”).Value
の通り、「sheet1」シートの「b3」セルに「30」という値が表示されます。

3)型変換を行わずに「+」を行った場合
それでは、型変換を行わない場合はどのようになるでしょうか。例えば、下図の通りにプログラムを記載します。

図9.型変換処理を行わない場合

上図の通り
Worksheets(“sheet1”).Range(“b3”).Value
= CDbl(一時記憶) + CDbl(Worksheets(“sheet1”).Range(“b3”).Value)
の前に「’」を挿入します。「’」を入力することで該当のプログラム処理をコメント化します。

次に型変換を行わないプログラムとして
Worksheets(“sheet1”).Range(“b3”).Value
=一時記憶+ Worksheets(“sheet1”).Range(“b3”).Value
と記載します。

プログラムを削除せずに型変換を行っているプログラム行をコメント化しているのは、いつでもこのプログラムに戻れるようにするためです。

それでは、
10+20
と入力後に、「+」ボタンを押すと結果「1020」となります。

これは、「一時記憶」が文字型ですので、
文字型 + 文字型
とすることにより文字を結合するわけです。例えば、文字の結合で
“あい”+”うえお”
とすることで、結果、”あいうえお”となります。

つまり、「+」の演算処理が前後の変数型によって、意味合いが変わることを意味しています。具体的には、数値型 + 数値型
の場合には足算処理を行い、
文字型 + 文字型
の場合には、文字の結合となるわけです。

 


ニコニコチャンネル(月額固定で見放題)
http://ch.nicovideo.jp/ai-light
本記事に関連する動画講座を閲覧できます。一部の動画は無料でも閲覧できます。

YouTubeチャンネル(無料動画配信中)
https://www.youtube.com/user/ailightcom
ITと経営に関する動画を配信しております。
よろしければ、チャンネル登録をお願い致します。

無料から学べる講座
https://www.ai-light.com/itkeiei/
本記事に関連する動画講座をセット販売しております。
その他、ITと経営に関する動画もセット販売しております。

格安ホームページ制作所
https://www.ai-light.com/hp2
インターネットマーケティングに関する記事が無料で閲覧可能です。

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

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


弊社は、主に中小企業様向けの業務システム開発ホームページ制作パソコンサポートコンサルティングなど、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までお願いします。