ベストプレープロ野球…エクセルVBAでツール作成㉑開幕準備

ベスプレ画面 ゲーム

  

 

この記事は

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

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

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

 

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

 

前 回 まで

・野手シートと投手シートの選手名を自動で作成しました。

・リーグ運営の設定表作成(選手の能力・成長 決定)

・野手の初期パラメータ作成(16歳)

・野手のプロ入り後パラメータ作成(現在)

・投手の初期パラメータ作成(16歳)

・投手のプロ入り後パラメータ作成(現在)

・オリジナルリーグ 全12球団分の支配下登録後のデータ作成

 

⇓出来上がっているプログラム

・メインモジュール  プログラム 新規リーグ作成
・共通モジュール  プログラム Saikoro・Get_Name・Get_SeityoType・Get_Nouryoku・NouryokuUp・NouryokuDown・年齢加算
・野手編モジュール  プログラム 野手作成・Get_Daseki・Get_Type・Get_Sinrai・Get_KillLeft・Get_Daritu・野手成長
・投手編モジュール  プログラム 投手作成 ・Get_Touho ・Get_PType ・Get_Kyusoku ・Get_Kaifuku・投手成長

 

前回で野手・投手の最終能力及び1軍・2軍の振り分けが終わりましたので

今回はベスプレ(ベストプレープロ野球)で読み込むデータを作成していきます。

 

開幕準備 の 流れ

まずは、選手名に空白がある場合はプログラムで全て”_”に置き換えました。

※ゲームではテキストファイルが読み込めずエラーが出ます

 

ベスプレ(ベストプレープロ野球)読み込みファイルを作成するにあたって

2軍は必要ないので、1軍選手のみのシートを作成します。

開幕シート実際にベスプレ(ベストプレープロ野球)で使う1軍選手です。

 

まずは12球団各シートの1軍・2軍以外の選手を削除します。

↓不要な選手を削除するプログラムはこちら

Public Function 退団選手削除(ActiveSheetName As String)

Dim WName As Variant
Dim i As Byte
Dim Low As Byte
Dim Col As Byte

WName = Right(ActiveSheetName, 2)

If WName = “野手” Then
Col = 28
Else
Col = 20
End If
Low = 2

For Low = 2 To 139 Step 3
i = 1
‘退団選手を削除
If Cells(Low, Col – 4) = “退団” _
Or Cells(Low, Col – 4) = “外人” _
Or Cells(Low, Col – 4) = “新人” Then

‘各項目の削除
Do Until Col – i = 0
Cells(Low, Col – i) = “”
Cells(Low + 1, Col – i) = “”
Cells(Low + 2, Col – i) = “”

i = i + 1
Loop

End If

Next Low

End Function

 

↑ここまでです。

 

これで余計な選手は削除され大分見やすくなりました…

 

野手移動 選手の並び替え

今のままでは1軍・2軍選手が混在していて見にくいです。

なので、1軍選手は上の方へ、2軍選手は下の方へ並び替えます。

1人の選手に3行使っているので、エクセルの並び替えは使えません。

使うとエライことになって、やり直しになりますので絶対禁止です。

 

オートフィルタで抽出表示する方が良い気はしますが、並び替えておきます。

 

↓野手の並び替えをするプログラムを作成します。

 

Public Sub 野手移動()

Dim i As Byte
Dim j As Byte ‘選手数34名
Dim Low As Byte
Dim Col As Byte
Dim movlow As Byte

For i = 1 To 3

‘初期設定
Col = 28
Low = 101

For j = 1 To 34

‘1軍への移動
If Cells(Low, Col – 4) = “1軍” Then
movlow = 2
‘空いている行を探す
Do Until Cells(movlow, Col – 4) = “”
movlow = movlow + 3
Loop

If Low <> movlow Then
‘各項目の移動
If movlow < 102 Then
Call 選手移動(movlow, Low, Col)
End If
End If

ElseIf Cells(Low, Col – 4) = “2軍” Then
‘2軍への移動
movlow = 50
‘空いている行を探す
Do Until Cells(movlow, Col – 4) = “”
movlow = movlow + 3
Loop

If Low <> movlow Then
‘各項目の移動
If movlow < 102 Then
Call 選手移動(movlow, Low, Col)
End If
End If

End If

If Low > 3 Then
Low = Low – 3
End If

Next j

Next i

End Sub

 

↑ここまでです。

 

新人移動 新人を1軍・2軍に加入させます

野手の並び変えも終わり、大分見やすくなりました。

後は新人の配属ですが、空いている場所にほりこんでいきます。

 

⇓新人の移動のプログラムを作成

 

Public Function 新人移動(ActiveSheetName As String)

Dim WName As Variant
Dim i As Byte
Dim j As Byte ‘新人数5名
Dim Low As Byte
Dim Col As Byte
Dim movlow As Byte

WName = Right(ActiveSheetName, 2)

‘初期設定
If WName = “野手” Then
Col = 28
Low = 119
Else
Col = 20
Low = 125
End If

For j = 1 To 5

If WName = “野手” Then

‘新人の1軍選手の移動
If Cells(Low, Col – 4) = “1軍” Then
movlow = 2
Else
‘新人の2軍への移動
movlow = 50
End If

Else

‘新人の1軍への移動
If Cells(Low, Col – 4) = “先発” Then
movlow = 2

ElseIf Cells(Low, Col – 4) = “中継ぎ” Then
movlow = 20

ElseIf Cells(Low, Col – 4) = “抑え” Then
movlow = 32

Else
movlow = 38
End If

End If

If WName = “野手” Then

‘空いている行を探す
Do Until Cells(movlow, Col – 4) = “”
movlow = movlow + 3
Loop

‘各項目の移動
If movlow < 102 Then
Call 選手移動(movlow, Low, Col)
End If
Else
‘空いている行を探す
Do Until Cells(movlow, Col – 4) = “”
movlow = movlow + 3
Loop

‘各項目の移動
If movlow < 108 Then
Call 選手移動(movlow, Low, Col)
End If
End If

Low = Low + 3

Next j

End Function

 

↑ここまでです。

 

↓新人移動では、さらにサブルーチンを呼び出してますので、それも追加します。

 

Public Function 選手移動(movlow As Byte, Low As Byte, Col As Byte)

Dim i As Integer

‘各項目の移動
i = 0
Do Until Col – i = 0
‘3行分移動
Cells(movlow, Col – i) = Cells(Low, Col – i)
Cells(Low, Col – i) = “”
Cells(movlow + 1, Col – i) = Cells(Low + 1, Col – i)
Cells(Low + 1, Col – i) = “”
Cells(movlow + 2, Col – i) = Cells(Low + 2, Col – i)
Cells(Low + 2, Col – i) = “”
i = i + 1
Loop

End Function

 

↑ここまでです。

これで、野手の新人の配属が完了です。野手・投手共これらを使います。

 

投手陣の並び替え

野手を並び変えしましたが、投手の方が重要です。

先発・中継ぎ・抑え と役割分担がありますから…。

 

⇓投手の並び替えをするプログラムはこちら

 

Public Sub 投手陣並び替え()

Dim i As Byte
Dim j As Byte ‘選手数36名
Dim Low As Byte
Dim Col As Byte
Dim movlow As Byte

For i = 1 To 3

‘初期設定
Col = 20
Low = 107

For j = 1 To 36

‘先発への移動
If Cells(Low, Col – 4) = “先発” Then
movlow = 2
‘空いている行を探す
Do Until Cells(movlow, Col – 4) = “”
movlow = movlow + 3
Loop

If Low <> movlow Then
‘各項目の移動
If movlow < 18 Then
Call 選手移動(movlow, Low, Col)
End If
End If

ElseIf Cells(Low, Col – 4) = “中継ぎ” Then
‘2軍への移動
movlow = 20
‘空いている行を探す
Do Until Cells(movlow, Col – 4) = “”
movlow = movlow + 3
Loop

If Low <> movlow Then
‘各項目の移動
If movlow < 30 And movlow > 19 Then
Call 選手移動(movlow, Low, Col)
End If
End If

ElseIf Cells(Low, Col – 4) = “抑え” Then
‘2軍への移動
movlow = 32
‘空いている行を探す
Do Until Cells(movlow, Col – 4) = “”
movlow = movlow + 3
Loop

If Low <> movlow Then
‘各項目の移動
If movlow < 36 And movlow > 31 Then
Call 選手移動(movlow, Low, Col)
End If
End If

ElseIf Cells(Low, Col – 4) = “2軍” Then
‘2軍への移動
movlow = 38
‘空いている行を探す
Do Until Cells(movlow, Col – 4) = “”
movlow = movlow + 3
Loop

If Low <> movlow Then
‘各項目の移動
If movlow < 108 And movlow > 31 Then
Call 選手移動(movlow, Low, Col)
End If
End If

End If

If Low > 3 Then
Low = Low – 3
End If

Next j

Next i

End Sub

 

↑ここまでです。

 

開幕準備シート の 作成

これまでで、オリジナルリーグ(チーム)の野手・投手シートの並び替えは出来ました。

 

後は、1軍の選手のみを抽出していきます。

 

⇓開幕用シート ここに各チーム1軍選手のみを書きこんでいきます。

開幕準備(白紙)大行と列の位置が重要です。

プログラムで書きこむ位置が決まっていますので。

 

開幕にあたって、選手名の空白はNG(ここはプログラムで置き換えしてます) 投手のオーバーハンドRo・ LoをR・Lに変更します。(ここもプログラムで置き換えてます)
⇓開幕シートに書き込むプログラムを作成

Public Function 開幕(PBi As String, Ti As Byte)

‘定数
Const WriteSheet As String = “開幕用” ‘書きこみシート
Const SerBat As Byte = 24 ‘野手条件位置
Const SerPit As Byte = 16 ‘投手条件位置

‘変数
Dim L As Byte ‘0:野手ループ 1:投手ループ
Dim i As Integer ‘ショートループ
Dim j As Integer ‘書きこみループ
Dim WriteFrg As Boolean ‘書き込みフラグ
Dim VarTouroku As Variant ‘ベスプレ登録条件

Dim ReadSheet As String ‘読み込むシート名
Dim VarAtai As Variant ‘移動用の項目保管先

Dim Low As Single ‘読み込み行
Dim Col As Byte ‘読み込み列
Dim WLow As Integer ‘書きこみ行 先発:22 中継ぎ:28 抑え:32 各チーム開始位置35行間隔
Dim WCol As Integer ‘書きこみ列 セリーグ:0 パリーグ:20

‘野手と投手ループ処理
For L = 0 To 1

‘変数初期設定
Col = 2
Low = 2
j = 0

‘セリーグとパリーグでは 書きこむ列が違う為
If Ti <= 5 Then
WLow = Ti * 35 + 4

If L = 1 Then
WCol = 11
Else
WCol = 19
End If

Else
WLow = (Ti – 6) * 35 + 4
If L = 1 Then
WCol = 31
Else
WCol = 39
End If
End If

If L = 1 Then
WLow = WLow + 19
End If

Do Until 41 – j = 0

‘書きこみを初期化
WriteFrg = False

If L = 0 Then
‘読み込むシート名の設定
ReadSheet = PBi & “_野手”

‘読み込むシート参照
Sheets(ReadSheet).Activate

Col = 23

‘野手は34+5名なので…
If j = 38 Then
j = 40
End If

‘野手登録条件にマッチングするかチェック
If Len(Sheets(ReadSheet).Cells(Low, SerBat)) > 0 Then
VarTouroku = Sheets(ReadSheet).Cells(Low, SerBat)

If VarTouroku = “1軍” Then
WriteFrg = True
Else
WriteFrg = False
End If
End If

Else
‘読み込むシート名の設定
ReadSheet = PBi & “_投手”

‘読み込むシート参照
Sheets(ReadSheet).Activate

Col = 15

‘投手登録条件にマッチングするかチェック
If Len(Sheets(ReadSheet).Cells(Low, SerPit)) > 0 Then
VarTouroku = Sheets(ReadSheet).Cells(Low, SerPit)

Select Case VarTouroku
Case “先発”
WriteFrg = True
Case “中継ぎ”
WriteFrg = True
Case “抑え”
WriteFrg = True
Case Else
WriteFrg = False
End Select
End If
End If

‘ベスプレ登録条件に満たした場合
If WriteFrg = True Then

‘書きこみシート参照
Sheets(WriteSheet).Activate

‘各項目の移動
i = 0
Do Until Col – i = 0

‘開幕用シートに書き込み
If Col – i < 2 Or Col – i > 5 Then

‘読み込むシート参照
Sheets(ReadSheet).Activate
VarAtai = Sheets(ReadSheet).Cells(Low, Col – i)

‘書きこみシート参照
Sheets(WriteSheet).Activate

‘名前の書きこみ
If Col – i < 2 Then

If Ti < 6 Then
Sheets(WriteSheet).Cells(WLow, 1) = VarAtai
Else
Sheets(WriteSheet).Cells(WLow, 21) = VarAtai
End If
Else
Sheets(WriteSheet).Cells(WLow, WCol – i) = VarAtai
End If

End If

i = i + 1

Loop

WLow = WLow + 1

End If

Low = Low + 3
j = j + 1

Loop

Next L

Sheets(WriteSheet).Activate

End Function

 

↑ここまでです。

 

今回の記事のプログラムを、一括で動かすプログラムを作成します。

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

 

Public Sub 開幕準備()

Dim i As Byte ‘ループ
Dim PBi As String ‘チーム
Dim OK_Order As String

MsgBox (“開幕オーダーを作成しています。一旦画面は消えますが、終了後再表示されますので、しばらくお待ちください。”)

Application.WindowState = xlMinimized

For i = 0 To 11

‘不要な選手を削除
Sheets(“リーグ情報”).Activate

PBi = Cells(3 + i, 4) & “_野手”

Sheets(PBi).Activate

‘野手処理
Call 退団選手削除(PBi)
Call 野手移動
Call 新人移動(PBi)

Sheets(“リーグ情報”).Activate

PBi = Cells(3 + i, 4) & “_投手”

Sheets(PBi).Activate

‘投手処理
Call 退団選手削除(PBi)
Call 投手陣並び替え
Call 新人移動(PBi)

Next i

For i = 0 To 11

Sheets(“リーグ情報”).Activate

PBi = Cells(3 + i, 4)

Call 開幕(PBi, i)

Next i

Application.WindowState = xlNormal

‘投手の投法 Ro、LoをR、Lに変換
Range(“B:B,V:V”).Select
Selection.Replace What:=”o”, Replacement:=””, LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False

MsgBox (“開幕準備が出来ました。テキストファイルを作成してベストプレープロ野球で読み込ませてください”)

End Sub

 

↑ここまでです。

リーグ情報 へ 開幕準備ボタンへの開幕準備の登録

最後にリーグ情報のボタンへ開幕準備プログラムをマクロ登録します。

⇓登録はボタンを右クリックで選択して行います。

開幕準備登録

これで終了。

 

ザキ さん
ザキ さん

時間がかかります。5分ぐらい

一度最小化してから終了後に

最大化で表示されます。

メッセージ付きです。

おすすめ
おすすめ

凄く不安になると思うけど

一息入れて待っててね。

画面を見せれないのは

見せた方が不安になるからなの…

開幕用シート が 戦力比較が出来て一番わかりやすい

ぶっちゃけ、各チームの情報の記事を書いてきましたが、

そのチームにのめりこまない限り、2軍選手やパラメータ・成長補正などは気になりません。

 

なので自チーム以外は開幕用シートさえ見てれば事足ります…。

 

この後のストーブリーグ(キャンプ)の記事に備えて筆者は一足先に開幕します。

 

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

 

ベストプレープロ野球を知りたい方は

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

 

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

  

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