打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
鼠标经过图片时放大效果的制作 | VBA实例教程

除非注明,文章均为 战战如疯 原创,转载请保留链接: http://www.zhanzhanrufeng.com/cat4/608.html,VBA交流群273624828。

之前在课程中我们讲过一个点击放大图片的例子,最近又看到一个更高大上的程序,实现的效果是鼠标放到图片上时图片会放大,鼠标移开时图片又会恢复原样。程序来自罗刚君的《Excel 2010 VBA编程与实践》。

先把代码贴出来,然后再做简单的解释。

Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
Type POINTAPI
x As Long
y As Long
End Type
Dim 开关 As Boolean, 原图, 当前图
Sub 缩放图片()
Dim 坐标 As POINTAPI, Multiple As Byte
On Error Resume Next
Multiple = 2
开关 = False
Do
If 开关 = True Then Exit Do
GetCursorPos 坐标
Set 当前图 = ActiveWindow.RangeFromPoint(坐标.x, 坐标.y)
If 当前图 Is Nothing Then
GoTo line
Else
If 当前图.Name <> 原图.Name Then
With 当前图
.Width = .Width * Multiple
.Height = .Height * Multiple
.ShapeRange.ZOrder msoBringToFront
End With
line:
With 原图
.Width = .Width / Multiple
.Height = .Height / Multiple
.ShapeRange.ZOrder msoSendToBack
End With
End If
End If
Set 原图 = 当前图
DoEvents
Loop
开关 = False
End Sub

首先要实现鼠标通过图片时就能捕捉到这个图片要用到API函数GetCursorPos,Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long这句是用来声明函数,使用这个函数还要定义一个数据结构

Type POINTAPI
x As Long
y As Long
End Type

“GetCursorPos 坐标”这句就是得到当前鼠标的坐标,“坐标.x”就是鼠标的x轴坐标,“坐标.y”就是鼠标的y轴坐标了。RangeFromPoint(x,y)这个函数就是捕捉坐标(x,y)处的对象,什么图标、按钮、图片啥的都可以取到,如果没有就返回nothing。取到图片之后就可以到图片进行放大操作了,为了在鼠标移开之后让图片恢复,这里设了两个变量“原图”和“当前图”,当执行了放大操作之后将图片对象赋值给变量原图,再次移动鼠标之后,重新捕捉到的图片就是当前图,如果当前图=原图,说明鼠标还在这张图上,所以不用再执行放大操作,如果当前图不等于原图了,说明到了新的图片上,那就要将原图指定的图片缩小,将当前图指定的图片放大,这是这个程序的基本思路,我不再多讲了。

需要注意的是这个程序在excel2007上是不能运行的,因为在2007上rangefrompoint这个函数取不到图片对象,这应该是2007的一个bug,在Excel2010上是可以运行的,在excel2003上应该也能运行,我没有试过。

本节示例文件下载: http://pan.baidu.com/s/1kToTASn

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
vb6如何获取窗口外的鼠标坐标
c# 获取鼠标处窗口句柄,程序嵌入桌面
C语言windows.h库的常用函数(二)
python小工具
vbs实现鼠标点击
VB制作伸缩窗体
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服