ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > E文精选 > Excel VBA > 拼图游戏 纯粹的EXCEL VBA制作 支持2007

拼图游戏 纯粹的EXCEL VBA制作 支持2007

作者:绿色风 分类: 时间:2022-08-17 浏览:244
楼主
ldy
拼图游戏 纯粹的EXCEL VBA制作 支持2007纯粹的EXCEL VBA制作的拼图游戏。        
没有API、没有外部引用,EXCEL提供很多强大实用的功能,        
这个小游戏所反映出来的仅仅是Excel多元化应用的冰山一角。        
此游戏系由简体中文版EXCEL2003制作,其他版本版的用户运行此游戏如有问题请回帖说明一下。      
修改了部分语句,可以支持 Excel2007
游戏方法        
开始游戏:任何时候点击 分图 按钮即可开始新游戏        
        点击空白旁边的小图,可以把小图移动到空白处。
        所有小图恢复原始位置后,游戏结束。

选择图片:有两种途径        
        1是可导入电脑中图片,如果图片太大,会影响游戏效果,可以手工调整图片大小
        2是可以从游戏自带图库中选图


选择难度:调整蓝色和绿色滚动条,确定图片切割的行列数量        
        从 2*2 到 7*7 ,修改滚动条控件的MAX属性可以把图片分割得更细                                
        但是难度太大就失去游戏的趣味性了,建议玩3*3 或 4*4                                

辅助选项:在点击 分图 按钮时有效                                       
        初学乍练:显示有切割线的对照图                                
        心中有数:显示原始图片                                
        记忆超人:以上都不显示                                

重置按钮:返回游戏前状态,此时可以调整原图的大小和旋转角度,可以得到不同的游戏体验                                       

VBA密码:LDY      



 



拼图游戏-LDY.rar
2楼
toby08
谢谢分享。不过还是出错:

 
3楼
ldy
 



奇怪,我这里没问题。我是2003和2007 都装了的,难道和这个有关。
出错时,点击一下调试,看看是那句出错?
4楼
toby08

这两处出现问题:
指定的值超出了范围          →    a.Top = kRg.Top
对象变量或With块变量未设置 →    If yy = kRg.Column Then
5楼
ldy
第二个错误是 第一个错误发生后点击了结束造成的。
第一个问题很奇怪,krg 是公共变量,是图中的空白单元格,这变量是在分图时就指定了的。
我这里不管怎么弄,都不会出现这个错误,按照错误编号,应该是公共变量被清空,VBA访问不到,才会出现这种情况,
公共变量被清空,出现这种情况的原因 1是进入了设计状态 ,2是在编辑器中点击了终止按钮。
从你的录像来看,并没有这样的操作,有一种可能性,就是加载宏中有类似代码实现了上述两种操作(例如有END 语句)。
如果有条件,你换一台电脑试试,或者禁用第三方加载宏。
初步判断,游戏本身没有错误,应该是其他方面的原因(其他代码中有END语句,并被触发了)
具体原因,还需要进一步测试,你把下面的 moveP 过程替换文件中moveP,再测试一次
代码中仅仅多了红色部分
看看对话框返回的是 什么内容。
Sub moveP(nm As String, Optional F As Boolean)

    Dim a As Shape
    Set a = Sheet1.Shapes(nm)

    Dim r As Range
    Set r = a.TopLeftCell

    xx = r.Row
    yy = r.Column

    If yy = kRg.Column Then
        If xx + 1 = kRg.Row Or xx - 1 = kRg.Row Then
       If Not F Then MsgBox kRg.Address & "   " & kRg.Top      
      a.Top = kRg.Top
            a.Left = kRg.Left
            Set kRg = r
             clicks = clicks + 1
             If F = False Then Range("b1") = "第  " & clicks & " 步"

        End If
    End If

    If xx = kRg.Row Then
        If yy + 1 = kRg.Column Or yy - 1 = kRg.Column Then
        If Not F Then MsgBox kRg.Address & "   " & kRg.Top
            a.Top = kRg.Top
            a.Left = kRg.Left
            Set kRg = r
             clicks = clicks + 1
            If F = False Then Range("b1") = "第  " & clicks & " 步"
        End If
    End If
   
    Set r = a.TopLeftCell
    xx = r.Row - 1
    yy = r.Column - 1
   
    If (xx - 1) * x + yy & "P" = nm And F = False Then
        检验
    End If

End Sub
6楼
ldy
这是一个开始从社区下载文件,到运行游戏的完整全屏录像,一切正常。

 
7楼
toby08
出现了对话框:

 
8楼
ldy
接下来还出错吗?

a.Top = kRg.Top  相当于 a.top = 99.75
9楼
ldy
如果你的Excel2007 连这样的语句都不支持,而你又没时间深究的话,建议重装一下。
10楼
toby08
好像还出错了,很奇怪,点击空白单元格上方的图片后,调试代码后,用鼠标指向a.Top时,显示=27; 指向kRg.Top 时,显示=99.75。点左边的图片,则a.Top=kRg.Top =99.75不知道为什么会这样

 
11楼
toby08

也许真的是我的office2007出了问题,
12楼
ldy
确实很离奇,因为 “错位” 过程中已经多次调用过 moveP,但不会出错
试一下这样
把 a.top = krg.top  改为
Sheet1.Shapes(nm).top = krg.top *1

如果还出错,没辙了,恐怕要重装一下了。
13楼
ldy
EH的网友进行了其他尝试,估计可能是版本问题,分图后,你直接取消保护看是否能运行?

保护工作表是为了避免游戏是图片被随意拖动,我的2007下保护后图片不能被选中,但可以接受VBA代码移动图片。

看来你的那个版本在保护后 图片不能被选中,也不接受VBA代码移动图片。

下面代码加两行,红色部分代码,可以避免游戏中拖动图片的行为。

Sub movePIC()
    Dim nm As String
    nm = Application.Caller
    Sheet1.Unprotect
    moveP nm
    Sheet1.Protect
End Sub
14楼
toby08
分图后直接取消保护就可以运行了。原来是保护工作表的缘故,
15楼
HHAAMM


刚刚看到帖子,真不错,赞赞赞!
Sub 分图() 还不明白是个什么道理,有时间仔细看代码
16楼
HHAAMM
点击分图后,去掉表保护,复制一个小图到别的表,再保存为网页。看到被分解后的小图了,原来还以为是障眼法那,现在知道真的是把图分解了。
这个功能不错,有用
17楼
HHAAMM
还没仔细看,但居然没用到API,这是excel的强大,也是刘版的强大
18楼
HHAAMM
还不清楚是个什么道理,先问下刘版
这个引出的问题,图片可以按曲线分割不
要是可以,俺准备做的地图工具,就不用找别的软件来分割图片了

免责声明

有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素, 经与ExcelTip.Net站长Apolloh商议并征得其同意, 现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示, 供有需要的人士查询使用,也慰缅曾经的论坛时代。 所示各个帖子的原作者如对版权有异议, 可与本人沟通提出,或于本站点留言,我们会尽快处理。 在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一

评论列表
sitemap