Loading [MathJax]/jax/input/TeX/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >让Excel工作表中的形状动起来

让Excel工作表中的形状动起来

作者头像
fanjy
发布于 2024-03-25 05:47:59
发布于 2024-03-25 05:47:59
34100
代码可运行
举报
文章被收录于专栏:完美Excel完美Excel
运行总次数:0
代码可运行

标签:VBA

下面是在网上找到的一段程序,可以让工作表中指定的矩形动起来。一个动作是转圈,一个动作是走斜线,如下图1所示。

图1

示例中矩形的名称为“Rectangle 1”。示例代码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Public Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) '等待时间(毫秒)
Sub Move_Square()
 Dim centerLeft As Long
 Dim centerTop As Long
 Dim Radius As Double
 Dim Theta As Double
 
 centerLeft = 300
 centerTop = 300
 Radius = 100
 
 With ActiveSheet.Shapes(1)
   For Theta = 0 To 2 * Application.Pi() Step Application.Pi() / 48
     .Left = centerLeft + (Radius * Cos(Theta))
     .Top = centerTop + (Radius * Sin(Theta))
     Sleep 40
     DoEvents
   Next Theta
 End With
End Sub

Sub test()
 Sheet1.Shapes("Rectangle 1").Left = 300
 Sheet1.Shapes("Rectangle 1").Top = 200
 MoveShape Sheet1.Shapes("Rectangle 1"), 0!, 0!, #12:00:01 AM#
End Sub

Sub MoveShape(shp As Shape, ByVal fLeft As Single, ByVal fTop As Single, t As Date)
 ' 将指定的形状从它所在的位置移动到它经过间隔t的位置
 Const d2R = 1.74532925199433E-02
 Const n1   As Long = 20 ' 加速/减速步数
 Const n2   As Long = 20
 Const n    As Long = 2 * n1 + n2 '  总步数
 
 Dim fcv    As Single ' 滑行速度,像素/步
 Dim i      As Long
 Dim v      As Single ' 给定步数的速度
 
 Dim fNumLeft As Single ' 左侧插值分数分子
 Dim fNumTop As Single ' 顶部插值分数分子
 Dim fDen   As Single ' 插值分数分母
 Dim fLeftold As Single ' 原始左侧位置
 Dim fTopOld As Single ' 原始顶部位置
 
 fcv = 1 / (n - n1)
 
 With shp
   fLeft = fLeft - .Left
   fTop = fTop - .Top
   fLeftold = .Left
   fTopOld = .Top
 
   For i = 1 To n
     Select Case i
       Case 1 To n1
         ' 加速
         v = fcv * (1 + Cos(d2R * 180 * (1 + i / n1))) / 2
       Case n1 + 1 To n - n1
         ' 恒速
         v = fcv
       Case Else
         ' 减速
         v = fcv * (1 + Cos(d2R * 180 * (1 + (n - i) / n1))) / 2
     End Select
 
     Debug.Print Right("  " & i, 3) & _
       Format(v, "  0.00000") & _
       Format(.Left, "  ##0.0")
 
     .Left = .Left + v * (fLeft - fNumLeft) / (1 - fDen)
     .Top = .Top + v * (fTop - fNumTop) / (1 - fDen)
     fDen = fDen + v
     fNumLeft = .Left - fLeftold
     fNumTop = .Top - fTopOld
     DoEvents
     Sleep t * 86400000# / n
   Next i
 End With
End Sub

有兴趣的朋友,可以试试。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-03-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 完美Excel 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
VBA应用示例:根据工作表中的信息制作带图像的人员卡片(扩展版)
在《VBA应用示例:根据工作表中的信息制作带图像的人员卡片》中,我们使用一些代码,根据工作表中人员的图像、姓名、年龄等信息,自动制作相应的人员卡片。
fanjy
2024/06/04
2190
VBA应用示例:根据工作表中的信息制作带图像的人员卡片(扩展版)
移动形状妙招,单击鼠标让形状自动跟随来移动形状
有时候,我们需要在工作表中绘制形状,并将其移动到合适的位置。通常,我们都是单击该选择形状并按住鼠标左键不放来移动形状。ozgrid.com中有人给出了一个方法,点击选择形状,然后移动鼠标,该形状会随形状而移动,再次点击将形状放置在最终位置。
fanjy
2024/02/23
3020
移动形状妙招,单击鼠标让形状自动跟随来移动形状
Excel实战技巧84: 让形状生动起来
我们可以将《Excel实战技巧83:制作动态的笑脸图》中介绍的技术运用到其他类型的形状中。下面再举一个例子,如下图1所示。
fanjy
2020/07/24
4550
Excel实战技巧84: 让形状生动起来
VBA专题01:操作形状的VBA代码
Excel提供了多种多样的形状类型,如下图1所示。本文主要讲述VBA操作形状的基础操作。
fanjy
2019/07/19
6.1K0
VBA实战技巧03: 精确追踪工作表中我们关注的形状
有些Excel用户喜欢在工作表中绘制形状,以实现其目的。例如,如下图1所示,绘制一个矩形方框来强调这些单元格中的数据。
fanjy
2020/03/27
1K0
问与答60: 怎样使用矩阵数据在工作表中绘制线条?
本文来源于wellsr.com的Q&A栏目,个人觉得很有意思,对于想要在工作表中使用形状来绘制图形的需求比较具有借鉴意义,特辑录于此,代码稍有修改,供大家参考。
fanjy
2019/07/19
2.8K0
excel宏 java,Microsoft Excel宏运行Java程序
大家好,又见面了,我是你们的朋友全栈君。 I have learnt to read and write an Excel file using a Java program with the he
全栈程序员站长
2022/09/07
8740
VBA编程练习05. 在工作表中实现七段显示
这是一个有趣的VBA编程练习,来自于dailydoseofexcel.com。使用VBA代码在工作表中将数字显示为七段显示,如下图1所示。
fanjy
2019/07/29
1.8K0
VBA编程练习05. 在工作表中实现七段显示
Excel应用实践12:在用户窗体中添加、查找和编辑数据记录
在Excel中,我已经创建了一个输入数据的用户窗体,用于在工作记录工作表中添加新数据记录。最近,老板提出了新的需求,要通过该用户窗体能够编辑数据记录,增强其功能。
fanjy
2019/07/19
3.7K1
刘金玉的零基础VB教程073期:windows API使用入门 sleep
Private Declare Sub Sleep Lib "kernel32" Alias "Sleep" (ByVal dwMilliseconds As Long)
刘金玉编程
2020/04/07
9900
刘金玉的零基础VB教程073期:windows API使用入门 sleep
实战 | 钓鱼与社工系列之office宏
根据多次项目实战中发现,office宏仍然是最高的成功率,在静默钓鱼中也是最不容易触发人员的警觉。因为大部分员工即使有安全意识,也是不运行陌生的exe程序,但是对于word文档则没有足够的安全意识,认为word文档都是安全的。正是基于此心理状态,office宏在钓鱼中仍然占据重要成分。
HACK学习
2021/12/08
1.7K0
实战 | 钓鱼与社工系列之office宏
VBA实战技巧35:使用VBA组织图形2
引言:本文的代码与昨天发表的《VBA实战技巧34:使用VBA组织图形1》一样,都整理自mrexcel.com,一个很好的令人兴奋的示例,有兴趣的朋友可以仔细研究。
fanjy
2021/09/22
1.9K0
VB6源码 webbrowser 自动登录网页批量下载文件 IE下载弹窗控制
VB6源码 webbrowser 网抓 自动登录网页批量下载文件 IE下载弹窗控制,网页元素控制等!!
办公魔盒
2019/07/22
2.5K0
vb语法菜鸟教程_VS VB
VB.Net是一种简单,现代,面向对象的计算机编程语言,由微软开发,将.NET Framework和公共语言运行库的强大功能与作为Visual Basic标志的生产力优势相结合。
全栈程序员站长
2022/09/27
17.3K0
vb语法菜鸟教程_VS VB
小游戏:围住神经猫
用Excel VBA实现的围住神经猫游戏: 模块代码: Public MGraph(80, 80) As Long Public Patharc(80) As Long '存储最短路径下标 P
xyj
2020/07/28
4540
小游戏:围住神经猫
如何根据Excel某列数据为依据分成一个新的工作表
1. Youtube - Derrick Sherrill 2. GitHub
繁华是客
2023/03/03
7.2K0
VBA实战技巧34:使用VBA组织图形1
引言:本文的代码整理自mrexcel.com,一个很好的令人兴奋的示例,有兴趣的朋友可以仔细研究。
fanjy
2021/09/22
1.8K0
Excel实战技巧98:使用VBA在工作表中添加ActiveX控件
要使用VBA从控件工具箱(ActiveX控件)中添加控件,可以使用OLEObjects集合的Add方法。该方法包含有大量的参数,包括ClassType、Top、Left、Width和Height等参数。
fanjy
2021/03/12
6.3K0
问与答115:如何使用VBA从Excel中复制图片并将其粘贴到PowerPoint的指定幻灯片?
Q:我在Excel工作表中包含有1张图片,名称是默认的“图片 1”,我怎样编写VBA代码来打开一个已存在的PPT文件,先删除该PPT中所有的图片,然后将“图片 1”复制并粘贴到该PPT的第2张幻灯片中。
fanjy
2021/04/21
4.6K1
问与答115:如何使用VBA从Excel中复制图片并将其粘贴到PowerPoint的指定幻灯片?
VBA代码:在工作表中自动添加矩形
这是在www.wimgielis.com中看到的一段代码,可以在工作表中自动添加一个矩形,用户可以指定矩形的大小和填充的颜色,以及指定相关联的宏。辑录于此,供参考。
fanjy
2024/04/26
5810
VBA代码:在工作表中自动添加矩形
推荐阅读
相关推荐
VBA应用示例:根据工作表中的信息制作带图像的人员卡片(扩展版)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验