 <p>You did not define the label <code>playerRollingForHit</code>... at least not in the code you are showing. This is a problem.</p> <p>As was pointed out by others, not having an idea of code structure is a much bigger problem. A <code>GoTo</code> statement, while legal should be used sparingly. And you should consider making your code more re-usable. For example, you can create your own data type:</p> <pre><code>Public Type player health As Integer strength As Integer ' whatever other properties you might have... End Type </code></pre> <p>And then you can create an array of players:</p> <pre><code>Dim players( 1 To 2 ) as player </code></pre> <p>This means you will be able to loop over the players, and "player 1 attacks player 2" can use the same code as "player 2 attacks player 1" (if they have the same rules). Similarly, you might want to create your own function "rollBetween" which allows you to roll different dice with a simple instruction.</p> <pre><code>Function rollBetween(n1 As Integer, n2 As Integer) ' roll a number between n1 and n2, inclusive rollBetween = Round(Rnd * (n2 - n1 + 1) - 0.5, 0) + n1 End Function </code></pre> <p>Putting it all together, for fun, I created some code that may help you understand what I'm talking about. Note - the rules here are not the same rules you used, but it's the same principle; as players get more strength, they become more immune to attack, and their attacks become stronger. I hope you can learn something from it, and have fun creating your game!</p> <pre><code>Option Explicit Public Type player health As Integer strength As Integer End Type Sub monsters() ' main program loop ' can have more than two players: just change dimension of array ' and rules of "who attacks whom" Dim players(1 To 2) As player Dim attacker As Integer Dim defender As Integer initPlayers players attacker = rollBetween(1, 2) ' who goes first: player 1 or 2 Debug.Print "Player " &amp; attacker &amp; " gets the first roll" While stillAlive(players) defender = (attacker Mod 2) + 1 playTurn players, attacker, defender attacker = defender ' person who was attacked becomes the attacker Wend MsgBox winner(players()) End Sub '------------------------------ ' functions that support the main program loop 'monsters': Function rollBetween(n1 As Integer, n2 As Integer) ' roll a number between n1 and n2, inclusive rollBetween = Round(Rnd * (n2 - n1 + 1) - 0.5, 0) + n1 End Function Sub initPlayers(ByRef p() As player) ' initialize the strength of the players etc Dim ii For ii = LBound(p) To UBound(p) p(ii).health = 10 p(ii).strength = 1 Next End Sub Function stillAlive(p() As player) As Boolean ' see whether players are still alive ' returns false if at least one player's health is less than 0 Dim ii For ii = LBound(p) To UBound(p) If p(ii).health &lt;= 0 Then stillAlive = False Exit Function End If Next ii stillAlive = True End Function Sub playTurn(ByRef p() As player, n As Integer, m As Integer) ' attack of player(n) on player(m) Dim roll As Integer ' see if you can attack, or just heal: roll = rollBetween(1, 2) Debug.Print "player " &amp; n &amp; " rolled a " &amp; roll If roll = 1 Then ' roll for damage roll = rollBetween(1, 4 + p(n).strength) ' as he gets stronger, attacks become more damaging Debug.Print "player " &amp; n &amp; " rolled a " &amp; roll &amp; " for attack" If p(m).strength &gt; roll Then p(n).strength = p(n).strength - 1 ' attacker gets weaker because attack failed p(m).strength = p(m).strength + 2 ' defender gets stronger Else p(n).strength = p(n).strength + 1 ' attacker gains strength p(m).health = p(m).health - roll ' defender loses health End If Else ' roll for healing roll = rollBetween(1, 3) Debug.Print "player " &amp; n &amp; " rolled a " &amp; roll &amp; " for health" p(n).health = p(n).health + roll End If Debug.Print "statistics now: " &amp; p(1).health &amp; "," &amp; p(1).strength &amp; ";" &amp; p(2).health &amp; "," &amp; p(2).strength End Sub Function winner(p() As player) Dim ii, h, w ' track player with higher health: h = 0 w = 0 For ii = LBound(p) To UBound(p) If p(ii).health &gt; h Then w = ii h = p(ii).health End If Next ii winner = "Player " &amp; w &amp; " is the winner!" End Function </code></pre> <p>Output of a typical game might be:</p> <pre><code>Player 2 gets the first roll player 2 rolled a 2 player 2 rolled a 2 for health statistics now: 10,1;12,1 player 1 rolled a 1 player 1 rolled a 2 for attack statistics now: 10,2;10,1 player 2 rolled a 2 player 2 rolled a 1 for health statistics now: 10,2;11,1 player 1 rolled a 2 player 1 rolled a 3 for health statistics now: 13,2;11,1 player 2 rolled a 2 player 2 rolled a 1 for health statistics now: 13,2;12,1 player 1 rolled a 1 player 1 rolled a 6 for attack statistics now: 13,3;6,1 player 2 rolled a 2 player 2 rolled a 2 for health statistics now: 13,3;8,1 player 1 rolled a 2 player 1 rolled a 3 for health statistics now: 16,3;8,1 player 2 rolled a 1 player 2 rolled a 5 for attack statistics now: 11,3;8,2 player 1 rolled a 1 player 1 rolled a 4 for attack statistics now: 11,4;4,2 player 2 rolled a 2 player 2 rolled a 1 for health statistics now: 11,4;5,2 player 1 rolled a 2 player 1 rolled a 2 for health statistics now: 13,4;5,2 player 2 rolled a 1 player 2 rolled a 4 for attack statistics now: 9,4;5,3 player 1 rolled a 2 player 1 rolled a 1 for health statistics now: 10,4;5,3 player 2 rolled a 1 player 2 rolled a 6 for attack statistics now: 4,4;5,4 player 1 rolled a 2 player 1 rolled a 2 for health statistics now: 6,4;5,4 player 2 rolled a 2 player 2 rolled a 3 for health statistics now: 6,4;8,4 player 1 rolled a 1 player 1 rolled a 6 for attack statistics now: 6,5;2,4 player 2 rolled a 2 player 2 rolled a 1 for health statistics now: 6,5;3,4 player 1 rolled a 2 player 1 rolled a 1 for health statistics now: 7,5;3,4 player 2 rolled a 2 player 2 rolled a 3 for health statistics now: 7,5;6,4 player 1 rolled a 1 player 1 rolled a 6 for attack statistics now: 7,6;0,4 </code></pre> <p>Final output - message box that declares player 1 the winner.</p>