ジーワンシステム社長のITコラム。
   ITについて、その他もろもろ
>> HOME >> コラム >> 第39回目 「エクセル de バブルブレーカー(Excel de Bubble Breaker)その10」

« 第38回目 「業界を変えたい」 | メイン | 第40回目 「羞恥心」 »

第39回目 「エクセル de バブルブレーカー(Excel de Bubble Breaker)その10」

設定シートとゲーム盤の分離

今までは簡単のために設定を行うセルとゲーム盤があるシートは両方ともSheet1でしたが,今回は設定シートとゲーム盤に分離します。
「1つのシート内で完結した方が楽なのに何故分離するの?」と思うかもしれませんが,設定と実際の動作プログラムを分けることは非常に重要です。 設定は,コンフィグ(config)などと呼ばれ,動作部分と比べて変更する機会が多かったり,動作プログラムの内容を把握していない人が変更する可能性があります。 それに対してゲーム盤は,プログラムが分からない人が変更する可能性は低いですし,下手にいじられたらゲームが動かなくなってしまうのであまり変更してほしくないものです。 ですので設定とゲーム盤の分離を行います。

と言っても実はプログラム的には先を見越して分離が容易になるように作ってあるので簡単です。

1.シート名変更

Excelの画面左下のところに「Sheet1」,「Sheet2」,「Sheet3」と書いてあるタブがあります。 これの「Sheet1」を「ゲーム盤」に,「Sheet2」を「設定シート」に変更してください。

シート名変更

2.設定部分を設定シートに移動

設定部分を切り取り

設定部分を貼り付け

3.プログラムの該当箇所変更

標準モジュールModule1の設定値取得サブルーチンの冒頭部分を変更します。
  1. Private Sub 設定値取得()
  2.  Dim i As Integer
  3.  Set sht設定シート = Application.Worksheets("設定シート") '将来シート名が変わったときここだけを変更する。
  4.  Set sht盤面シート = Application.Worksheets("ゲーム盤") '将来シート名が変わったときここだけを変更する。

これで上書き保存してください。

なお,前回の状態ではゲーム盤以外のセルを選択してしまうとエラーが発生するので,回避します。 標準モジュールModule1のcheckBreak関数の冒頭に赤字部分を付け加えます。

  1. Public Function checkBreak(ByRef Target As Range) As Boolean
  2.  Dim intV As Integer
  3.  Dim intH As Integer
  4.  'ゲーム盤外を選択していたら抜ける
  5.  If Intersect(Target, rng盤面) Is Nothing Then
  6.   Exit Function
  7.  End If

Intersectというのはメソッドなのですが,今回はただの関数だと思っていただいても支障がありません。 引数に指定された複数のRangeの被っているRangeを返します。 Targetとrng盤面を指定しているので,選択している範囲とゲーム盤の被っている部分を返します。 Isはオブジェクトを比較するときに使う演算子で,意味としては=のようなものです。 Nothingは文字通り無いことをあらわすオブジェクトです。 ですので結局「選択した範囲とゲーム盤の被ってる範囲が無かったら,関数を抜ける」という意味になります。さてエラーは解消できたでしょうか。

今回のプログラムをダウンロード

<< 第38回目 「業界を変えたい」 | | 第40回目 「羞恥心」 >>

>> HOME >> コラム >> 第39回目 「エクセル de バブルブレーカー(Excel de Bubble Breaker)その10」

トラックバック

このエントリーのトラックバックURL:
http://www.g1sys.co.jp/cgi-bin/app/mt-tb.cgi/69

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)