ベストプレープロ野球…エクセルVBAでツール作成②選手名決定

ベスプレ画面 ゲーム

  

この記事は

一生遊べる野球ゲーム 【ベストプレープロ野球】

をエクセルVBAでオリジナルリーグを作成するツールを作り、自分だけの世界を楽しんでもらえる参考になればと思い書いております。

すでに自作ツールで運用している方にも良い刺激になればと思っております。

 

この記事で紹介する ツールのダウンロードはこちらから

 

前回 一生遊べるベストプレープロ野球…ExcelVBAでツール作成①選手名リスト作成 で

名前リストを作成しました、ここでは選手シートを作成し

実際に名前を自動で割り振っていきます。

作成する物

野手シート:44名分(支配下34名:外国人5名:新人5名)

投手シート:46名分(支配下36名:外国人5名:新人5名)

メインモジュール:テスト用 プログラム名:共通

共通モジュール:サイコロ プログラム名:Saikoro

:選手名決定書き込み:Get_Name

 

前回で開発タブを追加しましたのでVBAの開発環境が整っています。

 

選手シート作成(野手・投手)

まず、エクセルにシートを追加するか、名前を変更して
T_野手,T_投手,名前リスト
の3枚のシートだけにしました。
そして野手シートを作成するのですが、
1番上の見出し行の特徴はメモがわりです。
1人の野手に3行 44名(34名+外国人5名+新人5名)の野手ですので133行まで下の図のように作成しました。
↓野手シート
次は投手シートです。
1人の投手に3行 46名(36名+外国人5名+新人5名)の投手ですので139行まで下の図のように作成しました。
↓投手シート
状況は 1軍・2軍・退団 などステータスに使う場面です。
※ 外国人枠を5名づつ使ってますが、1軍に登録出来るのは合計4名と考えています。
  同じように 新人枠も5名づつ使ってますが、あくまでドラフト枠で、
  最終的には 野手34名・投手36名が1軍・2軍に配属します。
このツールでは一人3行使います。
  ・白のセルに名前やベスプレパラメータを入れます。
  ・緑のセルにこのツールで使う実際の数値を入れます。
  ・黄色のセルにこのツールで使う補正値を入れます。

モジュール作成(プログラムを書き込む所)

シートが出来ましたので、次にプログラム部分を書き込むモジュールを挿入していきます。

開発タブから Visual Basic を選択して開発画面に切り替えます。

そして、標準モジュールフォルダから標準モジュール挿入を洗濯します。

画面は出来上がった状態ですので、挿入後は左上のプロジェクトの様になるように

2つのモジュールを作成します。

モジュール名の変更は

プロパティウィンドウ(F4)を押せば、選択しているモジュールやシート名などを変更できます。

・メイン 大まかな流れを書く上位ブログラム

・共通 選手・野手関係なく使うプログラム

と2つとも名前を変更します。

サイコロの作成

・まず1番大事なサイコロを作ります。

・全て無作為な部分はサイコロで決定しますので重要です。

 

↓のプログラムを共通モジュールに作成します。

’サイコロ

Public Function Saikoro(Optional ByVal Mentai As Integer = 100)

Randomize
Saikoro = Int((Rnd * Mentai) + 1)

End Function

 

基本100面体サイコロ 今回は名前リストの名前総数を分母として無作為に選びます。

名前を実際にシートに書き込む

出来上がったサイコロを使って、無作為に名前リストから各シートに書きこみを始めます。

 

↓のプログラムを共通モジュールに作成します。

’名前書き込み

Public Sub Get_Name(WriteSheet As String, Optional Newleague As Boolean = False, Optional Pitcher As Boolean = False)

Const NameList As String = “名前リスト”

Dim i As Integer ‘ループ回数
Dim j As Byte ‘名前リスト 日本人と外国人の列を入れる
Dim ID As Integer ‘名前のID番号
Dim Low As Integer ‘行
Dim Col As Integer ‘列
Dim ii As Integer ‘書き始め 新人は120行目からスタート
Dim EndLow As Integer ‘野手ループ回数
Dim SensyuSu As Long ‘選手名を入れる変数
Dim BytB As Byte ‘野手の状況取得用
Dim BytP As Byte ‘投手の状況取得用

Sheets(WriteSheet).Activate

‘名前の書き始め位置の指定
Col = 1
Low = 2

‘変数初期化 BytB BytPは選手の状態判別列
BytB = 23
BytP = 15

‘一から始める=true 新人だけつくる=false
If Newleague = True Then
ii = 0
Else
‘ピッチャーと野手では新人の書き込む位置が違う為 行指定
If Pitcher = False Then
ii = 102
Else
ii = 108
End If
End If

‘EndLowは最終行の指定
If Pitcher = False Then
EndLow = 130

Else
EndLow = 136

End If

‘選手名を名前リストから取得し書き込む
For i = ii To EndLow Step 3 ‘選手数 34名で3行つかっているので(34*3)回名前が必要、Stepは3行使っているから

‘外国人名を書き込む場所か判定
If Pitcher = True Then
If i >= 107 And i <= 121 Then
j = 4 ‘外国人名が日本人名の4列先にあるので変数割り当て BからFで4列後
End If
Else
If i >= 101 And i <= 115 Then
j = 4 ‘外国人名が日本人名の4列先にあるので変数割り当て BからFで4列後
End If
End If

‘外国人の名前の登録者総数が書いてあるところ
If j = 4 Then
SensyuSu = Sheets(NameList).Range(“E2”)
Else
‘日本人の名前の登録者総数が書いてあるところ
SensyuSu = Sheets(NameList).Range(“A2”)
End If

‘さいころ(乱数)で選手名番号取得 ここでは選手名総数の中から選ぶ為、引数に選手名総数を使っている。
ID = Saikoro(SensyuSu)

If Sheets(WriteSheet).Cells(Low + i, Col + BytB) <> “1軍” And Sheets(WriteSheet).Cells(Low + i, Col + BytP) <> “先発” _
And Sheets(WriteSheet).Cells(Low + i, Col + BytP) <> “中継ぎ” And Sheets(WriteSheet).Cells(Low + i, Col + BytP) <> “抑え” Then
‘登録選手名の書き込み
Sheets(WriteSheet).Cells(Low + i, Col) = Sheets(NameList).Cells(ID + 2, Col + 1 + j)
‘登録選手の登録名番号書き込み
Sheets(WriteSheet).Cells(Low + i + 1, Col) = Sheets(NameList).Cells(ID + 2, Col + j)
End If

‘再度 基本の日本人に戻す。現役と新人に挟まれた場所に外国人がいる為
j = 0

Next i

End Sub

 

出来上がりは↓のようになります。(画像は1部分ですが)

次に今まで書いたプログラムを実行する部分を作ります。

テスト用 メインプログラム作成

さて全てを長文で一つにまとめて書くと、間違っている時のメンテが大変なので

各パーツごとにプログラムは記述します。

 

そして メインプログラムから各パーツを呼び出して実行していきます。

 

今回パーツが出来たので、メインから実行するプログラムをメインモジュールに記述します。

 

↓のプログラムをメインモジュールに作成します。

‘テスト用
Public Sub test()

On Error Resume Next

Call Get_Name(“T_野手”, True, False)
Call Get_Name(“T_投手”, True, True)

End Sub

 

↓が貼り付け後の画面です。

これだけですが、Call でパーツプログラムを呼び出してます。

さて下画面のイミティエイトにプログラム名  test を入力してエンターを押します。

 

T_野手、T_投手 シートに名前と名前番号が書き込まれてました。

 

現役と新人の間に外国人が入るようにしています。新人は下の方です。

これで チームの選手名の命名はできました。

 

では、次から選手作成部分にいよいよ入っていきたいと思います。

 

⇐前の記事 【目次】 次の記事⇒

 

関連記事 ベストプレープロ野球…自由度が最強で一生遊べる野球ゲーム

 

ベストプレープロ野球 ソフトのお求めは⇓の画像から(Win,GBA,PS2)

  

タイトルとURLをコピーしました