ExcelマクロVBAサンプル集
ナンバーリンクを解くVBAのパフォーマンス改善№1

ExcelマクロVBAの実用サンプル、エクセルVBA集と解説
最終更新日:2017-11-26

ナンバーリンクを解くVBAのパフォーマンス改善№1


ナンバーリンク(パズル)を解くVBAに挑戦」で作成したVBAでナンバーリンクを解く事には成功しました、

最後に、枠の大きさを10×10に固定せずに、Application.InputBoxでセル範囲を指定して実行するように修正したものを掲載しておきます。理論的には、大きさの制限はありませんが、10×18でやったところ、4時間半もかかってしまいました。

しかし、

10×10なら数分で解けるものの、

10×18でやったところ、4時間半もかかってしまいました。

12×12では、待ちきれずに途中で止めてしまいました。

これでは、ちょっと実用に耐えません。

取り急ぎ時間を短縮するなら、表示タイミングを減らせばよく、

Call dispCell(

において、見る必要のない場所は、False指定にします。

具体的には、

行き場所がなくなり、順次戻る部分は表示を止めても、見た目は違和感を感じません。
tryCnt = tryCnt - 1
Call dispCell(True,



ここをFalse指定にします、getAdvance内に2箇所存在します。


ただ、確かに時間は半減しますが、

10×10なら、これで良い気もしますが、

10×18では、やはり時間がかかりすぎています。


全体を見直し、無駄な記述も確認しつつ、

新たに、ダメな進路パターンの判定を加えていきます。

ここからは、まさに時間との勝負です。

クイズが解けるまでの時間と、自身の費やす時間との勝負です。

№2へ続きます。


ナンバーリンクを解くVBAのパフォーマンス改善 : №1 №2 №3



こちらの最終完成版のダウンロード



同じテーマ「マクロVBAサンプル集」の記事

エクセルでファイル一覧を作成

VBAでサブフォルダ以下も含めて全てのファイル一覧を取得します。最初はサブフォルダは無視して、VBAにある関数とステートメントだけで作成します、その後に、FileSystemObjectで再帰処理をすることで、全てのサブフォルダも取得するようにしていきます。
アメブロの記事本文をVBAでバックアップする№6
前回で、当初の目的である、指定月のすべての記事一覧を取得し、記事本文のバックアップが完成しました。取得した記事本文は、このエクセルファイルと同一フォルダのサブフォルダ"HTML"に保存されます。タイトル、テーマ、更新日時はシートに一覧で表示されます。
数独(ナンプレ)を解くVBAに挑戦№5
数独をExcelマクロVBAで解いてみます№5、メイン処理を書いて完成になります。メイン処理のSub シートのA1~I9を配列(1To9,1To9)に入れる。trySuを呼ぶ…再帰プロシージャー 配列(1To9,1To9)をシートのA1~I9に入れる。
数独(ナンプレ)を解くアルゴリズムの要点とパフォーマンスの検証№4
数独(ナンプレ)を解くアルゴリズムを例にアルゴリズムの要点とそれによるパフォーマンスを検証します。一旦は完結したのですが見直す機会がありほんの少し改善しました。赤太字の部分のみの変更です 考え方としては候補数値の数が少ないところから攻めるのですが候補数値の数が2個くらいがいくつかあるのが普通です。
ナンバーリンク(パズル)を解くVBAに挑戦№8
最後に、枠の大きさを10×10に固定せずに、Application.InputBoxでセル範囲を指定して実行するように修正したものを掲載しておきます。理論的には、大きさの制限はありませんが、10×18でやったところ、4時間半もかかってしまいました。
ナンバーリンクを解くVBAのパフォーマンス改善№3
オセロを作りながらマクロVBAを学ぼう
ExcelマクロVBAでオセロ(リバーシ)を作っていきながら、マクロVBAを学んで行きましょう。目的は、マクロVBAの学習であり、思考を整理しVBAでプログラミングする学習です。従って、強いソフトを作ることが目的ではありませんので、最近流行のAIなんちゃら…なんていうのは考えるつもりはありません。
他ブックへのリンクエラーを探し解除するマクロ(変更前)
掲載しているVBAコードの最初に掲載したものになります。どのように変更したかを比べてみると、プロシージャー分割の参考になると思います。標準モジュール ExcelマクロVBAの実用サンプル、エクセルVBA集と解説
Excelシートの複雑な計算式を解析するVBAの関数構文
複雑な計算式を解析するVBAで使う「関数構文」シートのサンプルです。ほぼ全ての関数を網羅しています、中には漏れもあるかもしれませんが、解析VBAで使うに十分な関数が入っています。引数のない関数は意味がないのですが、一覧にあるものはそのまま入れています。


新着記事NEW ・・・新着記事一覧を見る

VBAコードの全プロシージャー・プロパィ一覧を取得|VBAサンプル集(10月12日)
VBAでエラー行番号を取得できるErl関数|VBA技術解説(10月12日)
手動計算時の注意点と再計算方法|ExcelマクロVBA技術解説(10月9日)
引数の数を可変にできるパラメーター配列(ParamArray)|VBA入門(10月7日)
VBEの使い方:デバッグ|ExcelマクロVBA入門(10月6日)
VBAにおける配列やコレクションの起点について|VBA技術解説(10月5日)
VBEの使い方:オブジェクト ブラウザー|VBA入門(10月5日)
VBEの使い方:ウォッチ ウィンドウ|VBA入門(10月4日)
VBEの使い方:ローカル ウィンドウ|VBA入門(10月3日)
VBEの使い方:イミディエイト ウィンドウ|VBA入門(10月2日)


アクセスランキング ・・・ ランキング一覧を見る

1.最終行の取得(End,Rows.Count)|VBA入門
2.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
3.RangeとCellsの使い方|ExcelマクロVBA入門
4.Range以外の指定方法(Cells,Rows,Columns)|VBA入門
5.変数とデータ型(Dim)|ExcelマクロVBA入門
6.繰り返し処理(For Next)|ExcelマクロVBA入門
7.マクロって何?VBAって何?|ExcelマクロVBA入門
8.ひらがな⇔カタカナの変換|エクセル基本操作
9.空白セルを正しく判定する方法(IsEmpty,IsError,HasFormula)|VBA技術解説
10.セルに文字を入れるとは(Range,Value)|VBA入門



  • >
  • >
  • >
  • ナンバーリンクを解くVBAのパフォーマンス改善№1

  • このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。


    記述には細心の注意をしたつもりですが、
    間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
    なお、掲載のVBAコードは自己責任で使ってください。万一データ破損等の損害が発生しても責任は負いません。




    このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
    本文下部へ