VBA Excel类型不匹配(线和点游戏)

VBA Excel类型不匹配(线和点游戏),vba,excel,Vba,Excel,我目前正在VBA Excel中制作线和点(或点和框)游戏,并不断遇到“类型不匹配”错误。我已经将黑色的填充单元格颜色设置为RGB(0,0,0),但是当我去创建退出游戏的条件时,当框被填充时,我得到“类型不匹配” 我似乎不明白问题出在哪里。我有另一个模块分配给矩形,所以当你点击矩形时,单元格颜色变为黑色(RGB(0,0,0)) 任何帮助都将不胜感激, 感谢错误发生在哪一行代码上?当我运行调试器时,它会将错误撒在巨型If块上,该块应该将InGame更改为False并退出循环。选择结尾处的整个大块->

我目前正在VBA Excel中制作线和点(或点和框)游戏,并不断遇到“类型不匹配”错误。我已经将黑色的填充单元格颜色设置为RGB(0,0,0),但是当我去创建退出游戏的条件时,当框被填充时,我得到“类型不匹配”

我似乎不明白问题出在哪里。我有另一个模块分配给矩形,所以当你点击矩形时,单元格颜色变为黑色(RGB(0,0,0))

任何帮助都将不胜感激,
感谢

错误发生在哪一行代码上?当我运行调试器时,它会将错误撒在巨型If块上,该块应该将InGame更改为False并退出循环。选择结尾处的整个大块->ctrl+H->将
&
更改为
并将
更改为所选范围。您的
&
只是将true向上链接
trueTrue….
上述If语句是否也应该更改?@Shark Yes它们应该在哪一行代码上发生错误??当我运行调试器时,它在巨型If块中散布错误,该块应将InGame更改为False并退出循环。选择末尾的整个大块->ctrl+H->将
&
更改为
并将选定范围的
。您的
&
只需将true链接起来
truetrue….
上述If语句是否也应该更改?@Shark是的,它们应该更改
Sub Main()
'Start routine to fill boxes with player color when complete
 'Declare & Initialize Player scores
   Dim Player1Score As Long
   Dim Player2Score As Long
   Dim TurnNum As Long
   Dim Turn As String
   Dim InGame As Boolean

  InGame = True
  Turn = "Odd"

    If (TurnNum Mod 2 = 0) Then
        Turn = "Odd"
        'MsgBox ("Odd")
    Else
        Turn = "Even"
        'MsgBox ("Even")
    End If

Do While (InGame = True)
    If (Range("E4").Interior.Color = RGB(0, 0, 0) & Range("D5").Interior.Color = RGB(0, 0, 0) & Range("E6").Interior.Color = RGB(0, 0, 0) & Range("F5").Interior.Color = RGB(0, 0, 0)) Then
        If (Turn = "Odd") Then
            Player1Score = Player1Score + 1
            Range("E5") = Player1
            TurnNum = TurnNum + 1
        ElseIf (Turn = "Even") Then
            Player2Score = Player2Score + 1
            Range("E5") = Player2
            TurnNum = TurnNum + 1
        End If
    ElseIf (Range("F5").Interior.Color = RGB(0, 0, 0) & Range("G4").Interior.Color = RGB(0, 0, 0) & Range("G6").Interior.Color = RGB(0, 0, 0) & Range("H5").Interior.Color = RGB(0, 0, 0)) Then
        If (Turn = "Odd") Then
            Player1Score = Player1Score + 1
            Range("G5") = Player1
            TurnNum = TurnNum + 1
        ElseIf (Turn = "Even") Then
            Player2Score = Player2Score + 1
            Range("G5") = Player2
            TurnNum = TurnNum + 1
        End If

    ElseIf (Range("H5").Interior.Color = RGB(0, 0, 0) & Range("I4").Interior.Color = RGB(0, 0, 0) & Range("I6").Interior.Color = RGB(0, 0, 0) & Range("J5").Interior.Color = RGB(0, 0, 0)) Then
        If (Turn = "Odd") Then
            Player1Score = Player1Score + 1
            Range("I5") = Player1
            TurnNum = TurnNum + 1
        ElseIf (Turn = "Even") Then
            Player2Score = Player2Score + 1
            Range("I5") = Player2
            TurnNum = TurnNum + 1
        End If

    ElseIf (Range("J5").Interior.Color = RGB(0, 0, 0) & Range("K4").Interior.Color = RGB(0, 0, 0) & Range("K6").Interior.Color = RGB(0, 0, 0) & Range("L5").Interior.Color = RGB(0, 0, 0)) Then
        If (Turn = "Odd") Then
            Player1Score = Player1Score + 1
            Range("K5") = Player1
            TurnNum = TurnNum + 1
        ElseIf (Turn = "Even") Then
            Player2Score = Player2Score + 1
            Range("K5") = Player2
            TurnNum = TurnNum + 1
        End If

    ElseIf (Range("E6").Interior.Color = RGB(0, 0, 0) & Range("D7").Interior.Color = RGB(0, 0, 0) & Range("E8").Interior.Color = RGB(0, 0, 0) & Range("F7").Interior.Color = RGB(0, 0, 0)) Then
        If (Turn = "Odd") Then
            Player1Score = Player1Score + 1
            Range("E7") = Player1
            TurnNum = TurnNum + 1
        ElseIf (Turn = "Even") Then
            Player2Score = Player2Score + 1
            Range("E7") = Player2
            TurnNum = TurnNum + 1
        End If

    ElseIf (Range("G6").Interior.Color = RGB(0, 0, 0) & Range("F7").Interior.Color = RGB(0, 0, 0) & Range("G8").Interior.Color = RGB(0, 0, 0) & Range("H7").Interior.Color = RGB(0, 0, 0)) Then
        If (Turn = "Odd") Then
            Player1Score = Player1Score + 1
            Range("G7") = Player1
            TurnNum = TurnNum + 1
        ElseIf (Turn = "Even") Then
            Player2Score = Player2Score + 1
            Range("G7") = Player2
            TurnNum = TurnNum + 1
        End If

    ElseIf (Range("I6").Interior.Color = RGB(0, 0, 0) & Range("H7").Interior.Color = RGB(0, 0, 0) & Range("I8").Interior.Color = RGB(0, 0, 0) & Range("J7").Interior.Color = RGB(0, 0, 0)) Then
        If (Turn = "Odd") Then
            Player1Score = Player1Score + 1
            Range("I7") = Player1
            TurnNum = TurnNum + 1
        ElseIf (Turn = "Even") Then
            Player2Score = Player2Score + 1
            Range("I7") = Player2
            TurnNum = TurnNum + 1
        End If

    ElseIf (Range("K6").Interior.Color = RGB(0, 0, 0) & Range("K7").Interior.Color = RGB(0, 0, 0) & Range("J8").Interior.Color = RGB(0, 0, 0) & Range("L7").Interior.Color = RGB(0, 0, 0)) Then
        If (Turn = "Odd") Then
            Player1Score = Player1Score + 1
            Range("K7") = Player1
            TurnNum = TurnNum + 1
        ElseIf (Turn = "Even") Then
            Player2Score = Player2Score + 1
            Range("K7") = Player2
            TurnNum = TurnNum + 1
        End If

    ElseIf (Range("E8").Interior.Color = RGB(0, 0, 0) & Range("D9").Interior.Color = RGB(0, 0, 0) & Range("E10").Interior.Color = RGB(0, 0, 0) & Range("F9").Interior.Color = RGB(0, 0, 0)) Then
        If (Turn = "Odd") Then
            Player1Score = Player1Score + 1
            Range("E9") = Player1
            TurnNum = TurnNum + 1
        ElseIf (Turn = "Even") Then
            Player2Score = Player2Score + 1
            Range("E9") = Player2
            TurnNum = TurnNum + 1
        End If

    ElseIf (Range("G8").Interior.Color = RGB(0, 0, 0) & Range("F9").Interior.Color = RGB(0, 0, 0) & Range("G10").Interior.Color = RGB(0, 0, 0) & Range("H9").Interior.Color = RGB(0, 0, 0)) Then
        If (Turn = "Odd") Then
            Player1Score = Player1Score + 1
            Range("G9") = Player1
            TurnNum = TurnNum + 1
        ElseIf (Turn = "Even") Then
            Player2Score = Player2Score + 1
            Range("G9") = Player2
            TurnNum = TurnNum + 1
        End If

    ElseIf (Range("I8").Interior.Color = RGB(0, 0, 0) & Range("H9").Interior.Color = RGB(0, 0, 0) & Range("I10").Interior.Color = RGB(0, 0, 0) & Range("J9").Interior.Color = RGB(0, 0, 0)) Then
        If (Turn = "Odd") Then
            Player1Score = Player1Score + 1
            Range("I9") = Player1
            TurnNum = TurnNum + 1
        ElseIf (Turn = "Even") Then
            Player2Score = Player2Score + 1
            Range("I9") = Player2
            TurnNum = TurnNum + 1
        End If

    ElseIf (Range("K8").Interior.Color = RGB(0, 0, 0) & Range("J9").Interior.Color = RGB(0, 0, 0) & Range("K10").Interior.Color = RGB(0, 0, 0) & Range("L9").Interior.Color = RGB(0, 0, 0)) Then
        If (Turn = "Odd") Then
            Player1Score = Player1Score + 1
            Range("K9") = Player1
            TurnNum = TurnNum + 1
        ElseIf (Turn = "Even") Then
            Player2Score = Player2Score + 1
            Range("K9") = Player2
            TurnNum = TurnNum + 1
        End If

    ElseIf (Range("E10").Interior.Color = RGB(0, 0, 0) & Range("D11").Interior.Color = RGB(0, 0, 0) & Range("E12").Interior.Color = RGB(0, 0, 0) & Range("F11").Interior.Color = RGB(0, 0, 0)) Then
        If (Turn = "Odd") Then
            Player1Score = Player1Score + 1
            Range("E11") = Player1
            TurnNum = TurnNum + 1
        ElseIf (Turn = "Even") Then
            Player2Score = Player2Score + 1
            Range("E11") = Player2
            TurnNum = TurnNum + 1
        End If

    ElseIf (Range("G10").Interior.Color = RGB(0, 0, 0) & Range("F11").Interior.Color = RGB(0, 0, 0) & Range("G12").Interior.Color = RGB(0, 0, 0) & Range("H11").Interior.Color = RGB(0, 0, 0)) Then
        If (Turn = "Odd") Then
            Player1Score = Player1Score + 1
            Range("G11") = Player1
            TurnNum = TurnNum + 1
        ElseIf (Turn = "Even") Then
            Player2Score = Player2Score + 1
            Range("G11") = Player2
            TurnNum = TurnNum + 1
        End If

    ElseIf (Range("I10").Interior.Color = RGB(0, 0, 0) & Range("H11").Interior.Color = RGB(0, 0, 0) & Range("I12").Interior.Color = RGB(0, 0, 0) & Range("J11").Interior.Color = RGB(0, 0, 0)) Then
        If (Turn = "Odd") Then
            Player1Score = Player1Score + 1
            Range("I11") = Player1
            TurnNum = TurnNum + 1
        ElseIf (Turn = "Even") Then
            Player2Score = Player2Score + 1
            Range("I11") = Player2
            TurnNum = TurnNum + 1
        End If

    ElseIf (Range("K10").Interior.Color = RGB(0, 0, 0) & Range("J11").Interior.Color = RGB(0, 0, 0) & Range("K12").Interior.Color = RGB(0, 0, 0) & Range("L11").Interior.Color = RGB(0, 0, 0)) Then
        If (Turn = "Odd") Then
            Player1Score = Player1Score + 1
            Range("K11") = Player1
            TurnNum = TurnNum + 1
        ElseIf (Turn = "Even") Then
            Player2Score = Player2Score + 1
            Range("K11") = Player2
            TurnNum = TurnNum + 1
        End If
    End If

    If ((Range("E4").Interior.Color = RGB(0, 0, 0) & Range("D5").Interior.Color = RGB(0, 0, 0) & Range("E6").Interior.Color = RGB(0, 0, 0) & Range("F5").Interior.Color = RGB(0, 0, 0)) & _
        (Range("F5").Interior.Color = RGB(0, 0, 0) & Range("G4").Interior.Color = RGB(0, 0, 0) & Range("G6").Interior.Color = RGB(0, 0, 0) & Range("H5").Interior.Color = RGB(0, 0, 0)) & _
        (Range("H5").Interior.Color = RGB(0, 0, 0) & Range("I4").Interior.Color = RGB(0, 0, 0) & Range("I6").Interior.Color = RGB(0, 0, 0) & Range("J5").Interior.Color = RGB(0, 0, 0)) & _
        (Range("J5").Interior.Color = RGB(0, 0, 0) & Range("K4").Interior.Color = RGB(0, 0, 0) & Range("K6").Interior.Color = RGB(0, 0, 0) & Range("L5").Interior.Color = RGB(0, 0, 0)) & _
        (Range("E6").Interior.Color = RGB(0, 0, 0) & Range("D7").Interior.Color = RGB(0, 0, 0) & Range("E8").Interior.Color = RGB(0, 0, 0) & Range("F7").Interior.Color = RGB(0, 0, 0)) & _
        (Range("G6").Interior.Color = RGB(0, 0, 0) & Range("F7").Interior.Color = RGB(0, 0, 0) & Range("G8").Interior.Color = RGB(0, 0, 0) & Range("H7").Interior.Color = RGB(0, 0, 0)) & _
        (Range("I6").Interior.Color = RGB(0, 0, 0) & Range("H7").Interior.Color = RGB(0, 0, 0) & Range("I8").Interior.Color = RGB(0, 0, 0) & Range("J7").Interior.Color = RGB(0, 0, 0)) & _
        (Range("K6").Interior.Color = RGB(0, 0, 0) & Range("K7").Interior.Color = RGB(0, 0, 0) & Range("J8").Interior.Color = RGB(0, 0, 0) & Range("L7").Interior.Color = RGB(0, 0, 0)) & _
        (Range("E8").Interior.Color = RGB(0, 0, 0) & Range("D9").Interior.Color = RGB(0, 0, 0) & Range("E10").Interior.Color = RGB(0, 0, 0) & Range("F9").Interior.Color = RGB(0, 0, 0)) & _
        (Range("G8").Interior.Color = RGB(0, 0, 0) & Range("F9").Interior.Color = RGB(0, 0, 0) & Range("G10").Interior.Color = RGB(0, 0, 0) & Range("H9").Interior.Color = RGB(0, 0, 0)) & _
        (Range("I8").Interior.Color = RGB(0, 0, 0) & Range("H9").Interior.Color = RGB(0, 0, 0) & Range("I10").Interior.Color = RGB(0, 0, 0) & Range("J9").Interior.Color = RGB(0, 0, 0)) & _
        (Range("K8").Interior.Color = RGB(0, 0, 0) & Range("J9").Interior.Color = RGB(0, 0, 0) & Range("K10").Interior.Color = RGB(0, 0, 0) & Range("L9").Interior.Color = RGB(0, 0, 0)) & _
        (Range("E10").Interior.Color = RGB(0, 0, 0) & Range("D11").Interior.Color = RGB(0, 0, 0) & Range("E12").Interior.Color = RGB(0, 0, 0) & Range("F11").Interior.Color = RGB(0, 0, 0)) & _
        (Range("G10").Interior.Color = RGB(0, 0, 0) & Range("F11").Interior.Color = RGB(0, 0, 0) & Range("G12").Interior.Color = RGB(0, 0, 0) & Range("H11").Interior.Color = RGB(0, 0, 0)) & _
        (Range("I10").Interior.Color = RGB(0, 0, 0) & Range("H11").Interior.Color = RGB(0, 0, 0) & Range("I12").Interior.Color = RGB(0, 0, 0) & Range("J11").Interior.Color = RGB(0, 0, 0)) & _
        (Range("K10").Interior.Color = RGB(0, 0, 0) & Range("J11").Interior.Color = RGB(0, 0, 0) & Range("K12").Interior.Color = RGB(0, 0, 0) & Range("L11").Interior.Color = RGB(0, 0, 0))) Then

       InGame = False

    End If
Loop