最終更新日:2017-12-06オセロを作りながらマクロVBAを学ぼうNo15ExcelマクロVBAでオセロ(リバーシ)を作っていきながらマクロVBAを学ぶ第15回です。棋譜が扱えるようになり、「待った」の実装も出来ました。棋譜が扱えるようになったので、今回は、対局を再現できるようにします。1手1手進められるように、1手1手戻せるようにします。下図のように、ボタンを追加します。btn13としました。以下をシートモジュールに追加します。処理の中核は、標準モジュールに記載します。イベントプロシージャー内では、エラー時のデバッグ等で使い勝手が良くないので、なるべく、標準モジュールに書いた方が効率がよいです。以下を、標準モジュールにに追加します。MsgBox("対局途中です。"棋譜はここまでです。Function棋譜再現ここは、「対戦開始」とほぼ同様で、初期配置までを行っています。棋譜進む「進む」ボタンで1手進めます。棋譜ToRangeで、棋譜の記号をセル(Range)に変換して、そこに石を置いています。棋譜シートの、"D1"セルに再現している手数位置を入れて、これでコントロールしています。False)これは、通常の対戦時に石を置く時に使っているものをそのまま使っています。これを使う事で、石を置けば相手の石をひっくり返してくれます。False)これの代わりに、棋譜にあるとおりに石を置いて、相手の石をひっくり返すのも棋譜通りに行う場合です。今回は、通常対戦とおりに、石を置いくことで相手の石もひっくり返しています。今回のように、棋譜に従って石を置いて、相手の石をひっくり返す法が良いだろうと考えました。棋譜戻る「待った」とほぼ動労の内容となります。棋譜の現在行("D1")を1行戻します。棋譜ToRangef5等の記号から、セル(Rangeオブジェクト)に変換しています。盤面の上と左にある記号から検索して、セル位置(行と列)を取得しています。取得した行と列を、Cellsに入れる事でRangeオブジェクトにしています。今回で、オセロソフト作成としては完了となります。強さはそこそこ、使い勝手もそこそこと言うところではないでしょうか。最後のまとめを書いておきたいと思います。ExcelマクロVBAでオセロ(リバーシ)を作っていきながらマクロVBAを学ぶ第16回です。15回に渡って、オセロ作成をしてきました、マクロVBAコードはかなりの量になっています。今回は最終回として、これまでを振り返ってみます。全体の目次はじめにExcelマクロVBAでオセロ(リバーシ)を作っていきながら、マクロVBAを学んで行きましょう。目的は、マクロVBAの学習であり、思考を整理しVBAでプログラミングする学習です。従って、強いソフトを作ることが目的ではありませんので、最近流行のAIなんちゃら...なんていうのは考えるつもりはありません。No1.シートの用意と標準モジュールの挿入ExcelマクロVBAでオセロ(リバーシ)を作っていきながらマクロVBAを学ぶ第1回です。シートを用意しなければなりません、このシートの作り方で、その後の手間が随分と変わってきますので、しっかりと作ります。いえ、まずは一般的な感じで作ってみます、今後必要に応じて追加・変更していきます。No2.ブックを開いたときの処理と初期配置ExcelマクロVBAでオセロ(リバーシ)を作っていきながらマクロVBAを学ぶ第2回です。前回でシートの準備と標準モジュールを挿入しましたので、今回からは、マクロVBAをどんどん書き足していきます。イベントプロシージャーを作っていきます。No3.自分の石を置ける場所の判定の整理ExcelマクロVBAでオセロ(リバーシ)を作っていきながらマクロVBAを学ぶ第3回です。自分の石を置いて、相手の石をひっくり返す処理に進むのですが、その前に、そもそも自分の石を置ける場所はどこなのか...。クリックしたセルは、自分の石を置いて良いセルなのかの判定が必要です。No4.自分の石を置ける場所の判定の実装ExcelマクロVBAでオセロ(リバーシ)を作っていきながらマクロVBAを学ぶ第4回です。石を置ける場所の定義を、前回は文章で書きました、今回は、それをもとにマクロVBAのプログラミングをしていきます。考え方は決定しているので、後はVBAに翻訳(コーディング)していくだけです。No5.シート機能を拡張して今後の準備ExcelマクロVBAでオセロ(リバーシ)を作っていきながらマクロVBAを学ぶ第5回です。前回で石を置ける場所の判定が完成しましたので、これからは、ゲームとしての機能を一つずつ追加していきます。石を置ける場所の色を変更してわかりやすくしてみます。No6.黒石白石を交互に打って相手の石をひっくり返すExcelマクロVBAでオセロ(リバーシ)を作っていきながらマクロVBAを学ぶ第6回です。今回は、黒石白石を交互に打てるようにします。相手の石を挟んでいる場所は、自分の石に取り替えます。マクロVBAでオセロ(リバーシ)を作っていきながらマクロVBAを学ぶ第7回です。前回までで、黒石白石を交互に打つことができるようになりましたが、まだまた不都合な点があります。そもそも、どっちが勝っているのかもわからない......No8.石を置ける場所の表示とアニメーションExcelマクロVBAでオセロ(リバーシ)を作っていきながらマクロVBAを学ぶ第8回です。前回までで大分ゲームらしくなってきました。PC対戦の機能を入れたいところですが、今回は、はPC対戦の機能を入れる前に、気になる細かい部分を変更しておきます。No9.PC対戦の実装ExcelマクロVBAでオセロ(リバーシ)を作っていきながらマクロVBAを学ぶ第9回です。前回までで人が打つのであれば不自由のない機能が実装できたと思います。ここからはPC対戦の機能を入れていきます。No10.置く場所に重みを付けて少しだけ強くExcelマクロVBAでオセロ(リバーシ)を作っていきながらマクロVBAを学ぶ第10回です。前回は、PCが自動で打つ機能を実装しました。強さはともかく、とにかくPCが勝手に売ってくれるようになりました。No11.相手の応手を評価してさらに強くマクロVBAでオセロ(リバーシ)を作っていきながらマクロVBAを学ぶ第11回です。前回の石を置く場所に重みを付けることで、超々初心者なら勝てるかもしれないというレベルにはなりました。今回は、自分の打つ場所ではなく、No12.PC対PCの対戦で強さを確認ExcelマクロVBAでオセロ(リバーシ)を作っていきながらマクロVBAを学ぶ第12回です。前回は、相手の応手を判定して、自分の置く場所を決められるようにしました。オセロソフトとしては、そこそこの強さになりました。No13.パラメーターと重みを調整してさらに強くExcelマクロVBAでオセロ(リバーシ)を作っていきながらマクロVBAを学ぶ第12回です。前回は、PC1からPC5までの5段階の状態で、総当り対戦で強さを判定しましたが、PC5が最も強い事が確認出来ました。それでもPC5では、まだまだ、ある程度オセロをやった事のある人には勝てないレベルです。No14.やはり「待った」が欲しいExcelマクロVBAでオセロ(リバーシ)を作っていきながらマクロVBAを学ぶ第14回です。前回で、6段階の強さのPCオセロが完成しました、一番強いPC6でも、まだまだそれほどの強さとは言えませんが、初心者の人なら苦戦するでしょうし、私も油断すれば負けてしまうくらいの強さにはなっています。No15.棋譜で対局を再現ExcelマクロVBAでオセロ(リバーシ)を作っていきながらマクロVBAを学ぶ第15回です。棋譜が扱えるようになり、「待った」の実装も出来ました。棋譜が扱えるようになったので、今回は、対局を再現できるようにします。No16.これまでを振り返りつつ全体のまとめExcelマクロVBAでオセロ(リバーシ)を作っていきながらマクロVBAを学ぶ第16回です。15回に渡って、オセロ作成をしてきました、マクロVBAコードはかなりの量になっています。今回は最終回として、これまでを振り返ってみます。見るTRIMRANGE関数(セル範囲をトリム:端の空白セルを除外)|エクセル入門(2024-08-30)正規表現関数(REGEXTEST,REGEXREPLACE,REGEXEXTRACT)|エクセル入門(2024-07-02)エクセルが起動しない、Excelが立ち上がらない|エクセル雑感(2024-04-11)ブール型(Boolean)のis変数・フラグについて|VBA技術解説(2024-04-05)テキストの内容によって図形を削除する|VBA技術解説(2024-04-02)ExcelマクロVBA入門目次|エクセルの神髄(2024-03-20)VBA10大躓きポイント(初心者が躓きやすいポイント)|VBA技術解説(2024-03-05)テンキーのスクリーンキーボード作成|ユーザーフォーム入門(2024-02-26)無効な前方参照か、コンパイルされていない種類への参照です。Case)|VBA入門9.メッセージボックス(MsgBox関数)|VBA入門10.マクロとは?VBAとは?VBAでできること|VBA入門ホームマクロVBA応用編マクロVBAサンプル集オセロを作りながらマクロVBAを学ぼうNo15このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。アクセスランキングサイトマップ事業案内お問い合わせホームマクロVBA応用編マクロVBAサンプル集オセロを作りながらマクロVBAを学ぼうNo15このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。新着記事アクセスランクおすすめ関連記事No16へ続きます。