タグ別アーカイブ: 繰返し処理

ゲームではじめるマクロ/VBA~繰返処理を字幕で学ぼう!

前回は、めいろゲーム1を試してみて頂いた上で、カーソルを動かす簡単なマクロを試して頂きました

今回、まずはエクセルマクロ/VBA醍醐味である「繰り返し処理/ループ」を試してみて頂きます

この「繰り返し処理」はシステム全般醍醐味といっても過言ではありません

この繰り返し処理のおかげで、人間は退屈な処理から解放されています

ぜひ、めいろゲーム2を通じて、この繰り返し処理を体感してみてください

この繰り返し処理は通常のマクロ/だと一瞬で終わってしまい、結果でしか、実感する暇がありません
このゲーム形式だと、登場人物に合わせて表示されるコードにて、はっきりと繰り返し処理が行われている様子を実感できるのが大きなメリットです!

めいろゲーム2の遊び方

迷路ゲーム2のシートにて、L列の下にある「やり方」ボタンを押すとゲームのコード設定の方法が表示されます

このめいろ2では、めいろ1と違い「2つのコード」とそれぞれの処理回数の指定だけで「ペンギン」が「オバケ」を壁にぶつからないでつかまえることができるようにします

めいろ1とめいろ2は「めいろの内容」と「ペンギンとオバケの配置」は全く同じです

ところが、繰り返し処理を行うめいろ2の場合は僅か2行のコードを設定するだけで済みます

この2行へのコードの集約がまさに「繰り返し」処理の醍醐味です

ペンギンがオバケをつかまえた後は、カーソルの動きの動き(ペンギンの移動)について実行された「全てのコード」が表示されます

上の画像を見て「なんのことかさっぱり??」と思われたかもしれませんが、

次の章で、中身について解説していきます

繰り返し処理の中味を見る

繰り返し処理には様々な種類がありますが、今回はFor ~Next文に絞って解説を行います

上の画像の赤字部分が、構文になります(➡後は可変になります)

ForとNextの間に書いてあるコードを繰り返し処理をさせます

「繰り返し処理を何回行うか?」

の指定については、変数という概念を使います

今回はこの変数については「魔法の呪文」と割り切って話を進めさせて頂きます

上の画像の「Dim myCount As Long」とは、「myCount」を「整数の型式」にて変数として使うという意味になります

この変数の「myCount」は中学の数学で使う「X」のような意味で考えて頂いて結構です

数学の問題ではXに様々な値が入り、Yの値が変わっていきます

今回の繰返し処理のコードでは「As Long」として指定することにより、「myCount」に整数だけが入るというルールになります

ちなみに、myCountという名前は「i」などの他の名前にして頂いても結構です

さて、

この「myCount」はFor~Next文の中で、繰り返し処理回数をコントロールするのに重要な役割を果たします

「For myCount = 1」と指定することで、myCountは整数の1から始まり、

その後に「to 4」と指定することで、myCountを1つずつ増やして4になるまでFor ~ Nextの中に入るコードを繰り返し処理するという意味になります

実際にコードをいじってみよう

今回は演習2というサンプルファイルを添付します

サンプルファイルの中には3つのマクロが入っています

このうち「Sample1」は前回に使用したものです

今回は、Sample2とSample3を使用します

まず、Sample2です

Sample2を実行すると「メッセージ」が表示されます

では、「編集」ボタンを押してSample2の中味をみてみましょう!

本当に簡単な一文が書かれているはずです

MsgBox~この一文だけで「メッセージ」を表示させることができます

では、Sample3を実行してみましょう!

今度は3回メッセージが出てきました

Sample2と同じ様に中味をみてみましょう

めいろ2と同じ様な繰り返し処理のコードが書かれています

今回の場合には、Toの後が4からに変わっています

ですので、メッセージを出すコードが3回繰り返し実行されています

繰返し処理を体感する意味で、この「」を他の数字に変更してみましょう!

変更した上で実行すると、繰り返し処理を体感しやすいはずです

<まとめ>

いかがでしたでしょうか?

今回は、繰り返し処理について体験して頂きました

記事の冒頭でも書きましたが、この繰り返し処理はシステムの醍醐味です

この繰り返し処理を使いこなせると、エクセルを使う景色が変わってきます

今回の内容は、繰り返し処理の中でも一番、基礎的な内容です

この基礎形を理解しておくと、様々な形で応用が効きますのでぜひマスターしておきましょう!

!ストリート・アカデミーにてゲームを使ったマクロ/レッスンも行っています➡ 詳細


にほんブログ村

日記:車が動くエクセルマクロ教材~繰り返し処理~

こんにちは、Excellent仕事術のガッツ鶴岡(@atsushi1039)です

私もプログラミング教育の普及に貢献したいと考えています

 「プログラミング学習」と「エクセルマクロ学習」を兼ねた、教材も作成できたらいいなとも思っています

 エクセルであれば、低価格で作成でき、親御さんもエクセルマクロにも強くなれるのであれば、とても有益だと思います

今回は、先日ある講習で使用としてボツになった学習資料を紹介します

 上のGIF画像では、マクロで画面下の赤い車を「スタート位置」から「Goal位置」まで動かしています

・ピン位置/50~350は左端からの距離です

・車上のボード/車の位置です

ポイント!

Goal1_BeforeとGoal1_Afterのマクロは、同じ内容で赤い車を動かします

但し、次の点が違っています

Before:繰り返し処理を使っていない

After:繰返し処理を使っている

このBeforeとAfterのコードの違いを確認して見て、「繰り返し処理」というものを体感しようというのが演習の趣旨でした

繰返し処理を使ったAfterのコードが次です

 そして、違うマクロでは上のAfterのコードを書き替えて、Goal2まで車が動くという演習でした!

引き続き、教材のブラッシュアップを図りプログラミング教育に貢献できるようになりたい、と思っています!

最後までブログを読んで下さり誠にありがとうございます

参考までにエクセルファイルを添付しておきます

にほんブログ村 資格ブログ ビジネススキルへ

にほんブログ村 IT技術ブログ VBAへ

にほんブログ村

ソルバーによるシミュレーション7~マクロ編・ループ処理~

 今回はマクロ編の総仕上げとして、計算結果を示すダイアログボックスを表示させないまま、繰り返し処理の中でソルバーを動かせるようにします  

画像に alt 属性が指定されていません。ファイル名: 36.jpg

 前回は、前々回に作成した記録マクロを修正し、ソルバーの指定範囲(目的セル、変数セル、制約条件)を変数で指定できるようにしました(TargetRange、myRange)

前回作成マクロ

 繰返し処理とソルバーを組み合わせると、一度のマクロ操作で必要な値を一覧で取得できます。

 一覧で取得した値を比較することにより、 シミュレーションの精度を格段に向上させることができます

それはもう、AIを導入したかのうような感覚になりますよ!

ぜひ今回で繰り返し処理をしっかり習得しておきましょう!

今回、前回作成したマクロを引き続き使って、繰り返し処理をおこなっていくのですが、

実は今回、習得するポイントはあまり多くなく、1つだけです

!ソルバーのダイアログの表示をどう防ぐか?

ソルバーの計算が終わった後にダイアログが必ず表示されますよね?

この表示が出てしまうと繰り返し処理が止まってしまいます。

このダイアログの表示を止める方法については、後ほど解説致します。

 繰り返し処理自体のVBAコードの詳細な解説については、他の専門サイトや専門書に譲りたいと思います

目次

ソルバーの各指定範囲を変数で置換え

ソルバーのダイアログを非表示

実際に動かしてみる

<まとめ>

ソルバーの各指定範囲を変数で置換え

前回は2つの範囲をIF構文で切り替えて指定できるようにしました

今回は表の最終行(変数:Last)を取得した上で、カウントアップ用変数のiと連動してソルバーの対象範囲を変えていけるようにします

上の画像にあるmyRowはiと連動してカウントアップしていきます

ソルバーのダイアログを非表示

これはこの4文字を足すだけで可能です ⇒TRUE

実際に動かしてみる

下のGIF画像のように、最終行を変更しながらマクロを動かしてみましょう!

どうでしょう?うまく計算できましたでしょうか?

<まとめ>

 ソルバーを使うと複雑なシミュレーションも簡単に行えます。実践的に活用する為のポイントとしては以下の2つだと思っています

・制約条件を整数やバイナリ、など実用的な形で指定する

・Productsum関数や^2(差の絶対値化)など数式の使い方を工夫する

マクロについては意外と簡単だったのではないでしょうか?もしうまく行かなかったら、記録マクロを作成してよく観察してみましょう!

 最後に、アイキャッチ画像に使っているのはマクロで作成しているスピードメーターグラフです

 こういった見る人の目を引くアイテムと「ソルバー」を組み合わせると楽しいシミュレーションボードが出来ます

ぜひトライしてみてください

⇒スピードメーターグラフ(マクロ付き)はこちらから

⇒スピードメーターグラフ(グラフ機能版)の解説はこちらから

にほんブログ村 資格ブログ ビジネススキルへ
にほんブログ村 IT技術ブログ VBAへ

にほんブログ村