Excel 如果不在范围内,则结束

Excel 如果不在范围内,则结束,excel,vba,Excel,Vba,我正在用MS Excel创建一个游戏,如果它超出我的范围,我需要停止此操作,这是我的游戏表,名为“table16x16”。程序是,如果你运行游戏并点击隐藏的空白单元格,那么程序会在所有8种方式中查找非空白单元格(直到找到),然后全部显示(我希望是清楚的)。Aniway,当我单击一个周围没有填充单元格的单元格时,它将跳出表格以搜索任何单元格,并用颜色填充表格中的单元格,直到工作表结束(向上和向左直到结束)。我希望它在我的“table16x16”中结束,停止向外看。谁能帮助我,告诉我怎么做 我的代码

我正在用MS Excel创建一个游戏,如果它超出我的范围,我需要停止此操作,这是我的游戏表,名为“table16x16”。程序是,如果你运行游戏并点击隐藏的空白单元格,那么程序会在所有8种方式中查找非空白单元格(直到找到),然后全部显示(我希望是清楚的)。Aniway,当我单击一个周围没有填充单元格的单元格时,它将跳出表格以搜索任何单元格,并用颜色填充表格中的单元格,直到工作表结束(向上和向左直到结束)。我希望它在我的“table16x16”中结束,停止向外看。谁能帮助我,告诉我怎么做

我的代码:

Sub ClearTheCells(myCell As Range)
    myCell.Font.Color = RGB(153, 204, 255)
    myCell.Interior.Color = RGB(153, 204, 255)
    myCell.Value = "."

    If myCell.Offset(-1, -1) = "" Then
        ClearTheCells myCell.Offset(-1, -1)
    End If

    If myCell.Offset(0, -1) = "" Then
        ClearTheCells myCell.Offset(0, -1)
    End If

    If myCell.Offset(1, -1) = "" Then
        ClearTheCells myCell.Offset(1, -1)
    End If

    If myCell.Offset(-1, -0) = "" Then
        ClearTheCells myCell.Offset(-1, 0)
    End If

    If myCell.Offset(1, 0) = "" Then
        ClearTheCells myCell.Offset(1, 0)
    End If

    If myCell.Offset(-1, 1) = "" Then
        ClearTheCells myCell.Offset(-1, 1)
    End If

    If myCell.Offset(1, 1) = "" Then
        ClearTheCells myCell.Offset(1, 1)
    End If

    If myCell.Offset(0, 1) = "" Then
        ClearTheCells myCell.Offset(0, 1)
    End If

    If IsNumeric(myCell.Offset(-1, -1)) Then
        myCell.Offset(-1, -1).Font.Color = vbBlack
        myCell.Offset(-1, -1).Interior.Color = RGB(153, 204, 255)
    End If

    If IsNumeric(myCell.Offset(0, -1)) Then
        myCell.Offset(0, -1).Font.Color = vbBlack
        myCell.Offset(0, -1).Interior.Color = RGB(153, 204, 255)
    End If

    If IsNumeric(myCell.Offset(1, -1)) Then
        myCell.Offset(1, -1).Font.Color = vbBlack
        myCell.Offset(1, -1).Interior.Color = RGB(153, 204, 255)
    End If

    If IsNumeric(myCell.Offset(-1, 0)) Then
        myCell.Offset(-1, 0).Font.Color = vbBlack
        myCell.Offset(-1, 0).Interior.Color = RGB(153, 204, 255)
    End If

    If IsNumeric(myCell.Offset(-1, 1)) Then
        myCell.Offset(-1, 1).Font.Color = vbBlack
        myCell.Offset(-1, 1).Interior.Color = RGB(153, 204, 255)
    End If

    If IsNumeric(myCell.Offset(1, 1)) Then
        myCell.Offset(1, 1).Font.Color = vbBlack
        myCell.Offset(1, 1).Interior.Color = RGB(153, 204, 255)
    End If

    If IsNumeric(myCell.Offset(0, 1)) Then
        myCell.Offset(0, 1).Font.Color = vbBlack
        myCell.Offset(0, 1).Interior.Color = RGB(153, 204, 255)
    End If

    If IsNumeric(myCell.Offset(1, 0)) Then
        myCell.Offset(1, 0).Font.Color = vbBlack
        myCell.Offset(1, 0).Interior.Color = RGB(153, 204, 255)
    End If
End Sub

我不确定我是否理解你的游戏,但我认为Intersect方法可以帮助解决这个问题。我只是在下面展示一个它是如何工作的例子。尝试修改它以满足您的要求

在下面的示例中,我设置了
myCell=11
。接下来,我检查了
myCell
是否在我定义为单元格A1:C10的范围内。如果没有,它将给出一条错误消息。否则,它会传递一个成功的信息

Dim myCell As Range

Set myCell = Range("A11")

If Intersect(myCell, Range("A1:C10")) Is Nothing Then
    MsgBox ("YOU CLICKED OUTSIDE THE TABLE")
Else
    MsgBox ("ALL GOOD")
End If

我正在做一个叫做扫雷舰的游戏。我有代码生成数字和所有其他东西。但要努力解决这个问题。我发布的代码对你有帮助吗?如果不是,您如何定义表16x16中的范围?我想这并不是我需要的。我的“table16x16”就是这样选择和命名的16x16表。我需要代码来搜索周围的整数,若在表的范围内并没有找到任何整数,只需将这些单元格标记为找到的颜色+整数(在搜索了所有8种方式后),我想我能更好地理解。问题是你有一个递归子程序,没有中断指定。您必须检查每个IF语句,看看它是否在您的范围内。我将展示一个示例:
如果不相交(myCell.Offset(-1,-1),“table16x16”)什么都不是,那么清除单元格(myCell.Offset(-1,-1)
无论如何都不起作用-它实际上在范围内清除,但也会清除整个单元格,直到左上方,最后我收到错误消息