Hello everyone,
For fun, I'm writing a 4D 4-in-a-row Tic Tac Toe program. It's like 3D tic tac toe, except, well, 4. I originally had it run off a user form that had a "Next Turn" and "Clear Board" button, but I'm changing it to place an X or O whenever the user right clicks on an appropriate square. I've attached my workbook for you to look at. Four.xlsm
Below is the code that is causing me trouble. I first couldn't figure out how to call a subroutine from another module. I'd still like to know how. Next, it created an infinite loop when it called the nextTurn sub, until I removed the "Write board" section of code. Finally, it is reacting very slowly when I have it call the Clear subroutine.

Private Sub WorkSheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
If LCase(Target.Value) = LCase("Clear Board") Then
    Clear
    Exit Sub
End If
Cancel = True
If 1 < Target.Row And Target.Row < 21 And Target.Row Mod 5 <> 1 And 1 < Target.Column And Target.Column < 21 And Target.Column Mod 5 <> 1 Then
    If turn Mod 2 + 1 = 1 Then Target.Value = "X"
    If turn Mod 2 + 1 = 2 Then Target.Value = "O"
    NextTurn
    Exit Sub
End If
End Sub
Here are my questions:
1. What's causing the inefficiency when calling the Clear sub and how do I fix this?
2. Why do I get an infinite loop if I remove the ' that is deactivating my "write board" section of code?
3. How can I call subroutines from another module?
4. (Optional) Why you're looking at this, I have about 100 lines of code that check for the winning conditions. I use dummy variables to multiple the elements of my board array across all rows, columns, and diagonals, and then use the product to determine if a win has occurred. I'm wondering if there is a more efficient way to do this. 100 lines of code seems like a bit much to say "Check if anyone has 4 in a row". If you have any ideas let me know.

Thanks everyone!

k64