如何根据条件定义活动单元周围的范围

时间:2019-04-23 16:32:54

标签: excel vba

基本上,我正在构建一个扫雷游戏,除了一件事情之外,我什么都不做。我正在努力挖掘空白(从activecell挖掘),直到在各个方向上找到任何数字值为止。

这是我目前拥有的一部分。我尝试将偏移值声明为变量,但没有用。

If ActiveCell.Value = "" Then
    ActiveCell.Interior.TintAndShade = 0
    ActiveCell.Offset(1, 0).Interior.TintAndShade = 0
    ActiveCell.Offset(1, -1).Interior.TintAndShade = 0
    ActiveCell.Offset(0, -1).Interior.TintAndShade = 0
    ActiveCell.Offset(-1, -1).Interior.TintAndShade = 0
    ActiveCell.Offset(-1, 0).Interior.TintAndShade = 0
    ActiveCell.Offset(-1, 1).Interior.TintAndShade = 0
    ActiveCell.Offset(0, 1).Interior.TintAndShade = 0
    ActiveCell.Offset(1, 1).Interior.TintAndShade = 0
End If

如何使每个单元格变成白色并展开直到找到任何值(1到9)。

1 个答案:

答案 0 :(得分:1)

那是一个递归问题,您需要创建一个递归函数,我会为您解答

我希望您能对我在这里所做的事情有所了解

Public Sub checkUntilItsHaveNumber(ByVal c As Range)
    If c.Value = "" Then
        c.Interior.TintAndShade = 0
        Call checkUntilItsHaveNumber(c.Offset(1, 0))
        Call checkUntilItsHaveNumber(c.Offset(-1,0))
        Call checkUntilItsHaveNumber(c.Offset(0, 1))
        Call checkUntilItsHaveNumber(c.Offset(0, -1))
    End If
End Sub