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

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

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

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

EXCEL、VBAプログラミングの第25-1回目で「画面クリアボタン(for-next処理と次ボタン処理の解説)」について解説を行う前半です。

今回は、以下のことについて解説を行っています。
1)はじめに(for-next処理)
2)「画面クリア」ボタン処理(前半)

1)はじめに(for-next処理)
前回は繰返し処理としてDo While~Loop処理などについて解説をしました。今回はFor文を使った繰返し処理について解説をします。

例えば以下のプログラムで1~31までをループする処理を示します。
Dim i As Integer
    For i = 1 To 31
        Cells(i, 1) = i & “日”  ‘セルA1~A31に曜日を表示します
    Next i

以下、上記にプログラムに対して解説を行います。
For 繰返し条件
 ~
Next
にて、For~Nextまでを指定された繰返し条件に合致するだけループします。

繰返し条件に関しては
For i = 1 To 31
iが1~31まで31回ループ処理を行います。

Cells(i, 1) = i & “日”
にて「&」は文字の結合ですから変数iに入力されている値と「日」という文字を結合します。「”」(ダブルクォーテーション)で囲まれている部分は値そのものを意味しています。

例えば、ループの1回目の際に変数「i」には「1」が入っていますのでこの部分は「1日」という値になります。

Cells(i, 1)

Cells(行番号, 列番号)
にて場所を表します。通常の設定では、EXCELの列番号はA,B,C,D…となっていますが、ここでは1,2,3,4…と数値で記載ができます。

本プログラムでは
Cells(i, 1)
と行方向を変数としていますので、ExcelのセルA1~A31に値を記入しますが、
Cells(1, i)
とするとExcelの1行目、セルA1~AE1に値を記入するようになります。つまり、列方向を変数にできます。

Next i
にてiをカウントアップします。

For ~ Nextの場合はサンプルの通り開始値と終了値を決めてループ処理を行いますので、ループする時点でループ回数が決定している場合に利用すると良いかと思います。ところが、Do While~Loopに関しては終了条件のみを示すのでループ回数が未定の場合に利用することが多いです。

Do While~Loopで気を付けなければいけない点としては、終了条件に該当しない場合には無限にループし続ける処理になってしまうことがあることです。

2)「画面クリア」ボタン処理(前半)
前々回は、下図の計算機システムで「画面クリア」ボタン処理の途中まで解説を行いました。

図1.計算機システム

前々回では「図1.計算機システム」にて「記録」ボタンを押して下図の左側のデータを記録させた後に、4行目の(表示配列,記録値)=(2,6)がシートに表示されている状態で「画面クリア」ボタンを押すと、(表示配列,記録値)=(2,6)の値が削除され記録領域は下図の右側のデータのようになりました。

図2.記録された値

今回からこの部分の処理について内容を確認していきます。下図の通り画面クリア処理にブレイクポイントを設定します。

図3.画面クリア処理にブレイクポイントを設定

ブレイクポイントはプログラムコードを記載しているエリアの左側をクリックすると茶色の丸が表示されますが、この部分がブレイクポイントになります。

処理の内容を確認します。画面クリア処理はコメント行が多いので、コメント行を削除したプログラムコードは以下の通りです。
********************************************
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

一時記憶 = “”
********************************************

以下、プログラムの詳細内容です。処理の上部から順に解説を行っていきます。

表示配列の一時記録 = 表示配列数
前々回にも説明を行いましたが表示配列数は現在EXCELのシート上(図1.計算機システム)で表示されている表示配列に1を足した値になっています。

例えば「図2.記録された値」の4行目である(表示配列,記録値)=(2,6)が画面に表示されているとすると「表示配列数」変数の値は「3」になります。その値を「表示配列の一時記録」変数に代入します。

これは「表示配列数」変数の値を一旦、退避されるためです。処理内で「表示配列数」変数の値を変更するので、一旦、値を退避させておいて、処理の終盤で
表示配列数 = 表示配列の一時記録 – 1
と表示配列数を戻すようになっています。

If 表示モード = “記録” Then
にて、「次」ボタンを押した際にパブリック変数である「表示モード」変数に「記録」という値が代入されています。「次」ボタン処理では記録配列に代入されている値を表示するモードですから記録配列の値を表示している際に画面クリアを押すと該当の記録配列を削除する処理を行う訳です。

ちなみに、記録配列を表示していない時(「表示モード」変数の値が「記録)でない時)は単純にセル「B3」の値を削除するだけですので、Else以下の
Range(“b3”).Value = “”
によって、値を削除する処理を行っています。

つまり「画面クリア」処理は何が表示されているかによって処理内容を分岐している訳です。何が表示されているかはパブリック変数である「表示モード」の値によって判断しています。

以降のプログラムに関する解説は次回に行います。

 


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