第8講 配列の学習
第8話 マクロの強制終了とマクロを実行する際の注意点


第7話の解説をお読みになってどうでしたか。
解説は理解できましたか。
解説を読んで理解できた方は、
『それならば列(縦列)同様にしてできるのでは?』
と思われたのではないでしょうか。
やってみて頂ければ、
お分かりになると思いますが簡単にはできないのです。
納得できない方は、是非ご自分で列の条件を加えてみてください。
待てでも待てでもエクセルは何の結果も出してくれないでしょう。
マクロを実行してエクセルが一見反応してくれないようになったときは、
Escをおして、マクロを強制的に止めてください。

実は、反応していないのではなく、
コンピュータは答えを見つけようとして、
試行錯誤を永遠に繰り返しているのです。
永遠という言葉が出てきましたが、
おそらくこのやり方だと、
何時間コンピュータに試行錯誤をさせてもエクセルシートに答えは打ち出されないでしょう。
まさに、永久に答えが出ないのです。
理由は簡単です。
並びによっては、数独は解なしになってしまうからです。
数独を生成するとき、
適当に数字を配置すれば良いとお考えになるでしょうが、
ほとんどの場合、解なしになってしまいます。
膨大な計算量になると何度も申し上げてきましたが、
試行錯誤を相当回数繰り返さないと、
解があり、しかも別解がないという条件をクリアできないのです。

永久にループを繰り返すことを
無限ループといいます。
無限ループはプログラミングの宿痾です。
うっかりするとプログラムはすぐに無限ループに陥ってしまいます。
ですからプログラムを組む上では、
無限ループに陥らないように最大限の注意が必要なのです。

この無限ループに陥ったプログラムを止めるものがEscボタンです。
ですが、エクセルの場合
Escを何度も連打したり、Escを押し続けたりしても
マクロを止められないときもしばしばあります。
Escで強制的にVBAを止められないときは、
エクセル自体を強制的に終了してください。
強制的に終了してもVBAに加えた変更は保存されている場合もありますが、
データが失われてしまう場合もあります。
ですから、マクロを実行する際には、上書き保存をするという習慣を身につけてください。
Ctrl+s で上書き保存が来ます。

さて、という訳でできれば第8講において数独を完成させたい訳ですが、
できない課題ですので、次善の課題を出したいと思います。
2行2列1ブロックの数独を完成させる課題です。
2行2列1ブロックの数独は答えが2つしかありません。

1 2
2 1


2 1
1 2

ですから、実行ボタンを押すと
2行2列1ブロックその1または2行2列1ブロックその2
のいずれかの答えを出すマクロということになります。


7話へ 第9話へ


トップ

初心者のためのc++ vc++ c言語 入門 基礎から応用までへ
初心者のための excel 2007 2010 2013 vba マクロ 入門 基礎から応用まで
初心者のための世界で一番わかりやすいVisual C++入門基礎講座
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座へ
vb講義トップへ
VB講義基礎へ
専門用語なしのC++入門へ
専門用語なしのJava入門へ
専門用語なしのVBA入門

数独のページ
魔方陣のページ
数学研究室に戻る
本サイトトップへ