把以上的代码复制或录入到Sub 画迷宫()过程内,然后按F5键运行,看看是否画出一个矩形边框。
再强调一遍,按F5键运行前,要把光标移到Sub过程内,才能运行该过程。
如果光标在Sub过程外部,按F5键后会弹出菜单,让你选择要运行哪个过程。如下图:
选择“画迷宫”,点击“运行”按钮即可执行。
下面4句代码画迷宫的内部的墙,方法是用Cells(行号,列号)语句指定某个单元格,然后画该单元格某一边的边框,一次画一条。
'以下画迷宫内部墙
Cells(迷宫头行 0, 迷宫头列 0).Borders(xlEdgeRight).LineStyle = xlDouble '指定单元格右边画双线边框
Cells(迷宫头行 1, 迷宫头列 0).Borders(xlEdgeBottom).LineStyle = xlDouble '指定单元格下边双线边框
Cells(迷宫头行 1, 迷宫头列 2).Borders(xlEdgeBottom).LineStyle = xlDouble '指定单元格下边双线边框
Cells(迷宫头行 1, 迷宫头列 1).Borders(xlEdgeTop).LineStyle = xlDouble '指定单元格上边双线边框
其中的行号,列号都是以常量『迷宫头行』和『迷宫头列』为基准的,即以第4行第2列为基准,分别 0、 1、 2来指定对应的单元格。
下一步画迷宫内部单元格的编号。
此处需要使用在Sub过程开头定义的三个局部变量。
其中『迷宫行号』和『迷宫列号』是迷宫内部相对于左上角的行号和列号,取值分别为0、1、2。即在迷宫内部的第0行、1行和2行,或第0列、1列或2列。
迷宫左上角的位置由常量『迷宫头行』和『迷宫头列』决定。
例如:迷宫内的第0行第1列,即:迷宫行号=0,迷宫列号=1。该单元格表示为:Cells(迷宫头行 迷宫行号, 迷宫头列 迷宫列号)
'以下画迷宫内部单元格的编号
迷宫编号 = 0 '设迷宫编号的初始值为0
For 迷宫行号 = 0 To 2 '迷宫当前行号=0,1,2
For 迷宫列号 = 0 To 2 '迷宫当前列号=0,1,2
Cells(迷宫头行 迷宫行号, 迷宫头列 迷宫列号) = 迷宫编号 '画迷宫内单元格的编号
迷宫编号 = 迷宫编号 1 '修改迷宫编号变为当前值 1
Next 迷宫列号
Next 迷宫行号
这是两个嵌套在一起的For循环语句。
外圈的For循环语句,一共循环三轮,『迷宫行号』分别取值0、1、2。
外圈的For语句每循环一轮,都要进入内圈For循环语句,并循环三轮,『迷宫列号』的取值分别为:0、1、2。
总共进行3x3=9轮循环。
『迷宫编号』初值为0,每循环一次加1,在9轮循环后,其值从0加到8 。
这两个For循环语句完整执行过程如下图的箭头所示:
蓝色箭头是内圈的列号循环,红色箭头是外圈的行号循环。9次循环后。迷宫内的9个单元格依次被写入0~8。
最后,我们在迷宫左上角写“老鼠”,右下角写“食物”。
注意,在单元格中所写的字符,必须用英文的双引号括起来,不能用中文的双引号:
'以下写"老鼠"和"食物"
Cells(迷宫头行, 迷宫头列) = "老鼠" '在迷宫0号单元格写“老鼠”
Cells(迷宫头行, 迷宫头列).Font.ColorIndex = 1 '字体设为黑色
Cells(迷宫头行 2, 迷宫头列 2) = "食物" '在迷宫8号单元格写“食物”
Cells(迷宫头行 2, 迷宫头列 2).Font.ColorIndex = 3 '字体设为红色
结尾 End Sub,画迷宫结束。
请把光标移到Sub 画迷宫() 的内部,按F5键运行此程序。
一个Sub过程除了可以直接运行之外,在别的Sub过程内部,写这个过程的名字,也可以调用此过程。调用时,不用写Sub,一般也不用写括号。
例如,我们在Sub 初始化()内部,加入俩行,如下所示:
Sub 初始化()
Dim 列号 As Integer '把变量 列号 定义为整型
For 列号 = 1 To 20 '列号从1到20循环
Cells(1, 列号) = 列号 '循环体,向指定单元格写入数据
Next 列号 '每循环一次列号加1,大于20后退出循环
Range(Cells(2, 1), Cells(26, 12)).Clear '清空指定矩形区域
画迷宫 '调用“画迷宫()”过程
End Sub
最后两句是新增的,第一句用于清空一块矩形区域,区域大小由左上角和右下角的单元格确定。第二句调用『画迷宫』过程。
这样,当我们运行『初始化』过程时,即可自动运行『画迷宫』过程。运行结果如下图: