I could not help but notice that even without the 750KB of null chars your project has over 25000 lines of code. I then notice that the code is constantly repeating itself because each and every player is hardcoded.
You could possibly store the players and teams in public arrays using a User Defined Type to describe them. Then instead of having hardcoded data you just pass the right variable.
Code:
Option Explicit
'Public is the same as Global
Public Type tPlayer '<-- a user defined type, UDT
ForeName As String
Surname As String
PicPath As String
Price As Currency 'Long might be better (/10 to display)
Skill As Integer
PositionIndex As Integer
TeamIndex As Integer
Points As Integer
Rebounds As Integer
Assists As Integer
Total As Integer
Season As Integer
Injury As Integer
Form As Integer
End Type
Public Type tTeam
Name As String
'PlayerIndexes() as Long '<--Could refer back to players
BigPicPath As String
SmlPicPath As String
End Type
Public Players() As tPlayer
Public Positions() As String
Public Teams() As tTeam
Then taking frmPlayerScore as an example you could break down the big select cases down to one sub (your code rearranged)...
Code:
Private Sub ShowScore(Player As tPlayer)
With Player
frmPlayerScore.Caption = .ForeName & " " & .Surname
PicPlayer.Picture = LoadPicture(App.Path & .PicPath)
lblPlayerName.Caption = .ForeName & " " & .Surname
lblPlayerPrice.Caption = "$" & .Price / 10 & "M"
lblPlayerPosition.Caption = Positions(.PositionIndex)
lblPlayerTeam.Caption = Teams(.TeamIndex)
If scoreprocess Then
lblPointsValue.Caption = .Points
lblPointsScore.Caption = .Points
lblReboundsValue.Caption = .Rebounds / 2
lblReboundsScore.Caption = .Rebounds
lblAssistsValue.Caption = .Assists / 2
lblAssistsScore.Caption = .Assists
lblTotalPoints.Caption = CStr(.Points + .Rebounds + .Assists)
lblSeasonPoints.Caption = .Season
lblGameNumber.Caption = gamenumber
If .Injury > 0 Then
lblInjuryNumber.ForeColor = vbRed
lblInjuryNumber.Caption = .Injury & " week(s) till return"
Else
lblInjuryNumber.ForeColor = vbGreen
lblInjuryNumber.Caption = "Fine"
End If
If .Form Then 'Form <> 0
lblFormBlank.Visible = False
lblFormNumber.Caption = .Form
Else 'Form = 0
lblFormBlank.Visible = True
lblFormNumber.Caption = ""
End If
Select Case .Form
Case Is = -2
PicForm1.Picture = LoadPicture(App.Path & "\RedArrow.JPG")
PicForm2.Picture = LoadPicture(App.Path & "\RedArrow.JPG")
Case Is = -1
PicForm1.Picture = LoadPicture(App.Path & "\RedArrow.JPG")
PicForm2.Picture = LoadPicture(App.Path & "\Black.bmp")
Case Is = 0
PicForm1.Picture = LoadPicture(App.Path & "\Black.bmp")
PicForm2.Picture = LoadPicture(App.Path & "\Black.bmp")
Case Is = 1
PicForm1.Picture = LoadPicture(App.Path & "\GreenArrow.JPG")
PicForm2.Picture = LoadPicture(App.Path & "\Black.bmp")
Case Is = 2
PicForm1.Picture = LoadPicture(App.Path & "\GreenArrow.JPG")
PicForm2.Picture = LoadPicture(App.Path & "\GreenArrow.JPG")
End Select
End If
End With
End Sub
With the original subs looking like this...
Code:
Private Sub FowardL_Home_Information()
If fowardlinfo = True Then
ShowScore Players(Val(frmMainHome.lblFowardL.Tag)) '<-- a Public variable or a controls Tag could be used to store the index
fowardlinfo = False
end if
End Sub
Hey presto, frmPlayerScore is 99% smaller and much easier to update.
This is off topic a bit so if relevant to you it maybe best to reply in a new topic referring back to this.