EXCEL、VBAプログラミング入門20~配列のサンプルプログラム~

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

今回は、EXCEL、VBAプログラミングの第20回目です。「配列のサンプルプログラム」というテーマでサンプルプログラムを取り上げながら配列について説明をします。

今回は、以下のことについて解説を行っています。
1)はじめに
2)配列の開始要素数を指定して定義する
3)LBound関数とUBound関数
4)サンプルプログラムをコピーして稼働させる

1)はじめに
下図の計算機システムで「記録」ボタンを押すと、「B3」セルに表示されている数値を内部に記録していくことができます。また、記録するデータ数に制約はありません。

図1.計算機システム

「記録」ボタンを押した時の処理は下図の通りです。

図2.記録クリック処理

また、「’」(シングルコーテーション)ではじまる部分はコメントですから、実質的な処理は以下の部分です。

ReDim Preserve 記録配列(記録配列数)
記録配列(記録配列数) = Range(“b3”).Value
記録配列数 = 記録配列数 + 1
MsgBox “記録されました”

ここでは、記録するデータ数がいくらでも保存できるように動的配列という機能を使用しています。

通常の配列については前回までで説明を行いましたが、通常の配列の場合には保存できる要素数を10個とか20個など最大数を決めます。しかし、動的配列の場合には、最大数を指定しないで配列を利用することが出来ます。

ちなみに配列という機能はほぼすべてのプログラム言語に存在する機能ですし、
Dim 記録配列(2) As String
と配列を定義した際にその要素が記録配列(0), 記録配列(1) ,記録配列(2)と要素数が「0」から始まるところなども、ほぼすべてのプログラム言語に共通するルールです。

プログラム言語はかなりの部分で共通した考え方を持っていますので、1つのプログラム言語をしっかりマスターすれば、他のプログラム言語をマスターするのも容易となるはずです。

2)配列の開始要素数を指定して定義する
要素数の開始番号をどうしても変更したい場合には以下のように定義します。

Sub 配列()
 Dim i As Integer
 Dim 記録配列(1 to 2) As String

 記録配列(1)= ”20”
 記録配列(2)= ”30”

     For i = 1 To 2
   msgbox 記録配列(i)
 Next i

End sub

このように定義することで、上記の通り、配列要素数を「1」~「2」として定義することができます。

プログラム言語を初めて学ばれる方は配列の要素数が「0」から始まることに違和感を覚えることが多いようです。そのような場合には、上記の方法を活用すると要素数の始まりを変更することが出来ます。

しかし、前述の通り他のプログラム言語も含めて配列の要素数は「0」から始まることが普通ですので、違和感は最初だけかと思います。上記の記述方法を多用すると他の方からは逆に違和感を感じられるプログラムになりますので、注意しましょう。

 

3)LBound関数とUBound関数
配列の要素数の最小値を取得するLBound関数と最大値を取得するUBound関数についても紹介をします。サンプルプログラムは以下の通りです。

Sub 配列()
 Dim i As Integer
 Dim 記録配列(2) As String

     記録配列(1)= ”20”
     記録配列(2)= ”30”

     For i = LBound(記録配列) To UBound(記録配列)
    msgbox 記録配列(i)
 Next i

End sub

「記録配列」変数は、記録配列(0), 記録配列(1), 記録配列(2)の3つの要素が定義されますが、LBound関数によって、「()」中の最小値である「0」が取得されます。同様にUBound関数よって「()」中の最大値である「2」が取得されます。

通常の配列の場合には、要素数を
Dim 記録配列(2) As String
と定義しますが、その時点で配列要素数の最小値と最大値は決定しますので、LBound関数、UBound関数はあまり利用価値がないように感じるかもしれませんが、動的配列の場合には最大の要素数が不定ですのでUBound関数などは利用価値が高そうです。

 

4)サンプルプログラムをコピーして稼働させる
サンプルプログラムを実際にExcelで稼働してみます。Visual Basicエディターを起動するには、下図の通り「開発」タグから「Visual Basic」を選択します。

図3.Visual Basicエディターの起動

下図の通り、Visual Basicエディターが起動しましたら、今回は下図の左側のプロジェクトエクスプローラーでsheet2(sheet2)を選択しました。

図4.プログラムコードの貼り付け

Sheet1(sheet1)にはすでに多数のプログラムコードが入力されていますので、それと混合しないようにしました。

今回のプログラムではシートに対するアクションはありませんが、Visual Basicエディターで「sheet2(sheet2)」モジュールにプログラムを記述すると、プログラムは「sheet2」シート上で稼働します。

これまでのサンプルプログラムではシート上にボタンを配置してボタンを押したら、プログラムを稼働するようにしましたが、今回はいきなりプログラムを稼働します。いきなりプログラムを稼働するには、
Sub 配列()
にカーソルを合わせて、上部のアイコンの緑色の矢印ボタンを押すとプログラムは実行されます。

この方法で様々なサンプルプログラムをコードエディターに貼り付け実行することができるようになりますので、とても便利です。


ニコニコチャンネル(月額固定で見放題)
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までお願いします。