EXCEL、VBAプログラミング入門25~画面クリアボタン(for-next処理と次ボタン処理の解説)~第2回目

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

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

EXCEL、VBAプログラミングの第25回目で「 (for-next処理と次ボタン処理の解説)」についての第2回目です。

今回は、以下のことについて解説を行っています。
1)はじめに(画面クリア処理のプログラムコード)
2)プログラムコードの説明

1)はじめに(画面クリア処理のプログラムコード)
今回は、前回の続きで画面クリアボタン処理をステップ実行で稼働しながら処理の内容について確認をしていきます。

画面クリア処理は図1、図2の通りです。

図1.画面クリア処理前半


図2.画面クリア処理後半

ちなみに「’」(シングルコーテーション)の部分はコメントですから、画面クリア処理の大部分はコメントです。

コメントを省いた処理内容は以下の通りです。

=====================================
Dim i As Integer
Dim 表示配列の一時記録 As String

表示配列の一時記録 = 表示配列数

If 表示モード = “記録” Then
        Do While 記録配列数 > 表示配列数
            記録配列(表示配列数 – 1) = 記録配列(表示配列数)
            表示配列数 = 表示配列数 + 1
        Loop

        記録配列数 = 記録配列数 – 1
        If 記録配列数 <= 0 Then
            記録配列数 = 0
            記録配列(0) = “”
        Else
            ReDim Preserve 記録配列(記録配列数 – 1)
        End If

              表示配列数 = 表示配列の一時記録 – 1

    Call 次_Click
Else
    Range(“b3”).Value = “”
End If

  一時記憶 = “”

=====================================

2)プログラムコードの説明
前回の説明では、以下の部分まで解説を行いました。
If 表示モード = “記録” Then

今回は
Do While 記録配列数 > 表示配列数
の部分から順に解説を進めて行きます。プログラムの解説は以下の文章だけを読んでも理解不能かと思いますので、必ず上のプログラムコードを印刷するなりして、プログラムコードを見ながら解説に目を通すようにして下さい。

「記録配列数」変数には記録配列として配列に保存されている要素数が入力されています。現在は、記録配列数が「5」になっています。ちなみに変数名はその変数の用途を表している変数名を付けるとプログラムの可読性が上がりますので、本プログラムの変数名には日本語を採用しています。

現在、記録配列に記録されている値は下図の左側の通りです。

図3.記憶配列

A列の表示配列欄は配列の要素番号を表しています。配列の要素番号は「0」からスタートしますので、A1セルは「0」になっています。

また、VBAエディターの「図2.画面クリア処理後半」内の「表示配列数」変数にカーソルを合わせると、この変数には「3」の値が入っていることが確認できます。よって、
Do While 記録配列数 > 表示配列数
の条件が成立しますので、「Do While」内の処理が実行されます。

記録配列(表示配列数 – 1) = 記録配列(表示配列数)
によって、現在「表示配列数」変数の値は「3」ですから
記録配列(2) = 記録配列(3)
の処理が行われます。

「図3.記憶配列」より、
記録配列(3) の値は「10」で、記録配列(2) の値は「6」ですが、
記録配列(2) = 記録配列(3)
によって、記録配列(2) の値は「10」となります。ただし、記録配列(3) の値は「10」のままです。

表示配列数 = 表示配列数 + 1
にて、表示配列数の値が「4」になります。

さらに
Do While 記録配列数 > 表示配列数
に処理が戻ります。記録配列数の値が「5」で、表示配列数の値が「4」ですから条件が成立し「Do While」内が処理されます。

記録配列(表示配列数 – 1) = 記録配列(表示配列数)
により、
記録配列(3) = 記録配列(4)
の処理が行われ記録配列(3) の値は「15」となります。記録配列(4) の値は「15」のままです。

最終的には「図3.記憶配列」の右側のように元の(表示配列,記録値」=(2,6)を削除して、削除した行を元の表示配列「3」「4」で1つ詰めるような処理を行うことが目的です。

現在のところまでの処理で、(表示配列,記録値)は
(0,1)
(1,3)
(2,10)
(3,15)
(4,15)
となっています。

従って、最終行の(表示配列,記録値) =(4,15)を削除すれば「図3.記憶配列」の右側のようになります。

次に処理を進めます。

表示配列数 = 表示配列数 + 1
によって、表示配列数の値が「5」となりますので、

Do While 記録配列数 > 表示配列数
は記録配列数の値が「5」で表示配列数の値が「5」となりますので「Do While」ループを抜けることになります。

ループ処理の「Do While」を抜けた直後は
記録配列数 = 記録配列数 – 1
によって、記録配列数は「4」となります。

If 記録配列数 <= 0 Then
は条件が成立しませんので「Else」以降が処理されます。

     ReDim Preserve 記録配列(記録配列数 – 1)
ReDim Preserveによって現配列要素は残したまま再定義します。現在「記録配列数」変数の値は「4」ですから、
     ReDim Preserve 記録配列(3)
を実行したことになります。つまり「記録配列」変数を記録配列(3)にて再定義することになります。

記録配列(3)で再定義を行うことにより、
(表示配列,記録値)=(4,15)
は削除され
(表示配列,記録値)は
(0,1)
(1,3)
(2,10)
(3,15)
となります。

配列要素の途中の値を削除する処理全体の流れの概要は削除したい値の次の値からループ処理によって順に上書きしていき最後の値は配列を再定義することによって削除している訳です。

以上で、EXCEL VBAプログラミング講座は終了です。本講座では計算機システムをEXCEL VBAにて制作し、その制作方法を説明することでEXCEL VBAプログラミングを学んでいただきました。

プログラミングの入門といった類いのものはどうしても文法の説明に終始しがちです。他のプログラム言語をすでに知っている方であれば自分の知っているプログラム言語との比較で効率的に学べるかと思いますが、初学者の方にとっては文法の説明ばかりになると実際にプログラムをする際にどうすれば良いかのイメージがわきにくいですし、プログラムが随分と難しく感じてしまいます。そこで、本EXCEL VBAプログラミング講座では文法の説明はそこそこにして実際に稼働する内容のものを説明することでプログラミングがどのように稼働しているかを実感していただけるようにしました。


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