gpt4 book ai didi

excel-vba可玩迷宫制作单元格(解释为墙壁)成为无法通过的对象

转载 作者:行者123 更新时间:2023-12-04 22:31:02 26 4
gpt4 key购买 nike

关闭。这个问题需要更多 focused .它目前不接受答案。












想改进这个问题?更新问题,使其仅关注一个问题 editing this post .


1年前关闭。







Improve this question




所以我为offset.select制作了表单控制按钮(上下左右按钮),我想不出一个代码,当一个单元格被墙包围时(我把它变成一个黑色填充的单元格),这个单元格只能转到它的左/右/等。非常感谢您的帮助(作为新手,我会考虑我在 excel-vba 方面的技能)

here's what my maze looks like

最佳答案

在您的工作表 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

它是如何工作的?
  • 我们使用一个公共(public)变量来保存所选单元格的当前位置。
  • Worksheet_SelectionChange 事件会在每次选定单元格更改时触发。所以我们检查目标单元格的背景颜色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

    关于excel-vba可玩迷宫制作单元格(解释为墙壁)成为无法通过的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52775322/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com