所以我制作了用于offset.select的表单控制按钮(selection(左上右下按钮)),我想不出一个代码,当一个单元被墙壁包围时(我将其设为黑色填充单元),单元只能转到其左/右/等位置。非常感谢您的帮助(我认为我是excel-vba的新手)
答案 0 :(得分:1)
在工作表VBA代码中使用以下内容,甚至可以使用箭头键浏览迷宫。您将无法穿过墙壁。
Option Explicit
Public OldPosition As Range
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If OldPosition Is Nothing Then Set OldPosition = Target.Parent.Range("AF9") 'adjust AF9 to your start position
If Target.Interior.Color = vbBlack Or Target.Row = 1 Or Target.Column = 1 Or Intersect(Target, OldPosition.Offset(-1, -1).Resize(3, 3)) Is Nothing Then
Application.EnableEvents = False
OldPosition.Select
Application.EnableEvents = True
Else
OldPosition.Interior.Pattern = xlNone
Set OldPosition = Target
OldPosition.Interior.Color = vbRed
End If
If Not Intersect(Target, Target.Parent.Range("V50")) Is Nothing Then
MsgBox "you finished"
End If
End Sub
它如何工作?
Target.Interior.Color
的背景色是否为黑色。如果是这样,那么我们回到原来的位置OldPosition.Select
,否则我们接受并记住目标单元格为我们当前的位置Set OldPosition = Target
这是为了防止用户用鼠标跳动
If Target.Interior.Color = vbBlack Or Intersect(Target, OldPosition.Offset(-1, -1).Resize(3, 3)) Is Nothing Then