|
楼主 |
发表于 2017-2-6 18:41
|
显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用 · 内置多项VBA编程加强工具 ★ 免费下载 ★ ★ 使用手册★
修复1:错误如下图:
解决办法:防止无关事件的交叉启动,适时反复关开事件响应,相关代码如下:
- Application.EnableEvents = False
- For i = 1 To h
- For j = 1 To l
- If shuzi(i, j) = "●" And Cells(i, j).Value <> "↓" Then Cells(i, j).Value = "↓"
- Next j
- Next i
- tim1 = Int(Timer() - tim + 0.5)
- mingzi = Application.InputBox("恭喜您获得了胜利!!!用时:" & tim1 & "秒。" & Chr(13) & Chr(13) & Chr(13) & Chr(13) & "玩家名字(有效长度12字符):", , , , , , , 2)
- mingzi = Left(mingzi & " 无", 12)
- With SJ
- .Cells(.Cells(.Rows.Count, 2 * jibie).End(xlUp).Row + 1, 2 * jibie).Value = mingzi '记录闯关成功者名字
- .Cells(.Cells(.Rows.Count, 2 * jibie + 1).End(xlUp).Row + 1, 2 * jibie + 1).Value = tim1 '记录闯关成功者成绩
- If jibie = 4 Then .Cells(.Cells(.Rows.Count, 2 * jibie + 2).End(xlUp).Row + 1, 2 * jibie + 2).Value = h & "*" & l & "/" & lei '记录自定义闯关规格
- End With
- Cells(h + 1, l + 2).Value = ""
- Application.EnableEvents = True '★★★结束出口3
- End '此处不用Exit Sub是为了防止游戏结束后再逐层返回递归调用上层程序,但会释放所有变量
复制代码 完善1:增加自定义排行,否则,自定义扫雷提示输入名字而不展示排行,逻辑不通。如图:
也正是有了自定义模块,才在一些特例中发现了程序中存在的隐蔽问题。比如:15*15方格中仅有2颗雷时,多数情况下应该是挖一下即胜利,但本程序不见得,似乎事件的递归有次数限制(瞎猜),有点费解!
|
|