A few points to note.
1) A public variable is declared in the module (or form), not within a subroutine or function.
2) In general, try to avoid using public variables if possible because they make code maintenance difficult.
3) If you want to change the value of a variable within a subroutine and have it accessible by the calling function, then you can use the keyword ByRef. Something like this:
Code:
Private Sub Form_Click()
Dim intShotNumber As Integer
intShotNumber = 45
rklMakeShotNumber "NoInsert", intShotNumber, "b"
MsgBox intShotNumber
End Sub
'Place this in the form code if it is not called by other forms or modules
Private Sub rklMakeShotNumber(ByVal rklMode As String, ByRef curShotNumber As Integer, ByVal curShotNumSuffix As Variant)
Select Case rklMode
Case "NoInsert"
curShotNumber = curShotNumber + 1
Case "Insert"
....other code
Case Else
MsgBox "Unknown rklMode = " & rklMode
End Select
End Sub