今回は、天候に応じた射撃力と命中判定を行う機能を追加する。
1)機能概要
A)下図のように射撃シートを追加し、天候から求めた補正量を反映した射撃力で命中判定を行う。
天候により歩兵と砲兵では射撃補正量が違うので、各々の兵科に対して計算・判定する。
なお、射撃できる騎兵の場合は、歩兵の欄を参照する(小銃という点では同じなので)。
なお、命中判定用に射撃戦結果表も追加する。内容はME版のもの。
2)マクロとEXCEL関数
A)A列とD列は標題と説明で手動作成。
B)BとC列の2〜15行目までは入力欄で、計算時にプレイヤーが該当する値を入れる。
C)BとC列の18〜19行目は、上記B)の入力値を基に計算する(EXCEL機能)。
D)BとC列の20〜21行目は、マクロ(射撃判定に登録)で設定する。マクロの処理概要は、以下の通り。
・C)の射撃比、賽の目補正を取り込み、計算用作業領域で作成した命中判定用乱数の値から、
該当する射撃結果表の内容を求めて、結果を設定する。
・隣接補正が1なら、検索する射撃結果表の列は右に1つずれた欄を使う。
・命中判定用乱数の値が、35か36(賽の目で65か66)の場合は指揮官の死傷判定を行う。
この時、計算用作業領域で作成した死傷判定用の乱数を使う。
・英国ライフル中隊が1なら、上記の値を31〜36(賽の目で61〜66)に変更する。
3)その他の変更
・時間シートの一部レイアウト変更を行った。(時間帯から開始分を横に並べた)
・全てのシートに入力欄を除いて保護を設定し、マウスで指定できないようにした。
⇒間違って計算式の入っているセルを書き換えた事があり、間違い防止用。
なお、パスワードはないので、EXCELの書式/シート保護解除で解除できる。
4)作成したツール
マクロ付のファイル(Fire1.Xlsm)はWord Pressに登録できないので、バタイユゲーム
情報班のダウンロードページに登録予定。
<個人的感想>
レイアウトを一部変更した際に困った事に気付いた。通常ならEXCELはセルを移動しても、そのセルを
参照している式は自動的に移動先に変更される。しかし、VBAの場合にRange(“B7”).Selectなどと
絶対的なセル位置を指定すると、EXCELでセルをB7からA8に移動してもVBAのコードはRange(“B7”)の
ままである。EXCELのセル移動機能とVBAは連動していない・・・。
結局、VBAのプログラムを修正する事になった。VBAに慣れない間は、Range(“B7”)などの指定の方が
分かり易くで良い。しかし、後々のレイアウト一部変更を考えると、基準位置を決めて下記のような
相対的な参照の方が良いと思う。射撃シートの場合、A列にある”射撃側の兵科”の文字を検索して
基準位置の行番号(stdrowf)を求め、その位置からの相対行数で参照している。
参照例)Cells(stdrowf + i + 2, j + 1)
<リンク>