仮想通貨100種類以上の特徴を紹介!だけど雑記ブログw

プログラミング講座2-6・ライフゲーム-どんどん次の世代に移るようにしよう。

 

前回までに「nextGeneration」という世代を1つ進めるサブプロシージャを作成しました。今度はこれを繰り返して実行し、何世代も観察できるようにしましょう。関数名はrepeatNextGenerationということにしましょうか。いじりやすいように前回書いたプロシージャに上に、行を追加して書きたしましょう。プロシージャの中で、別のサブプロシージャを呼び出す場合は「Call プロシージャ名」と書くだけです。そこまで分かれば、鋭い方は、すぐに書けてしまうのでは、ないでしょうか。

Public Sub repeatNextGeneration()

    Dim i As Long

    Dim frequency As Long

    frequency = 10

    For i = 1 to frequency

        Call nextGeneration

    Next

End Sub

こんな感じで。

でも、これでは、10回繰り返すことはできますが、15回や20回繰り返すためには何度も書き直さなければなりません。これでは使い勝手が悪いです。そのため今回は「引数(ひきすう)」というものを使います。これは外部からCallで呼び出す際に値を指定して呼び出すことができるものです。具体的には上のコードの中で、定義しているfrequencyを一行目の「repeatNextGeneration()」のカッコの中に書くだけです。実際に書くと、下のようになります。(「Dim」は不要)

Public Sub repeatNextGeneration(frequency As Long)

    Dim i As Long

    For i = 1 to frequency

        Call nextGeneration

    Next

End Sub

実行用のプロシージャを作成

さて、ではこれを実行してみましょう。

が、しかし、今度は引数があるせいで「F5」で簡単に実行することができません。これを実行するために、新たにサブプロシージャを作る必要があります。

今書いたサブプロシージャ「repeatNextGeneration」よりもさらに上に「testExecute」というサブプロシージャを作成し、適当な回数を指定して、「repeatNextGeneration」呼び出しましょう。

Public Sub testExecute()

    Call repeatNextGeneration(20)

End Sub

この「testExecute」をF5で実行してみましょう。VBEの画面

VBEの画面を小さくして、後ろにエクセルの画面が見えるようにしてから、F5で実行してみてください。すると、とんでもない問題があることに気付くハズですw

 

速っ!!!

 

これでは、観察もクソもないwww

速度を調節する

好みの問題なので、好きに設定してもらえば良いのですが、とりあえずは0.5秒にしておきましょうか。この場合は単純に一行「Application.Wait [Now() + “0:00:00.5”]」と追加するだけです。簡単ですね。これで本当に完成です。

Public Sub testExecute()

    Call repeatNextGeneration(20)

End Sub

 

Public Sub repeatNextGeneration(frequency As Long)

    Dim i As Long

    For i = 1 to frequency

        Call nextGeneration

        Application.Wait [Now() + “0:00:00.5”]

    Next

End Sub

さて、次回はこれをもっと使いやすくするためにフォームを作成しようと思っています。これが完成すれば本当に完成となります。結構長かったですね(^^;

前へ ・ 目次へ ・ 次へ

SNSでフォローする

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です