Vba 通过项目ID更改项目的属性以进行形状动画
例如,是否可以通过对象的ID发出命令来旋转形状或更改不同(布尔)设置(如可见性),或者是否需要事先选择? 就我所知,我必须在更改每个项目的特征/数据之前选择一个“取消选择”选项 我的代码如下所示(将生成闪烁箭头的“动画”): 如果可能,我正在寻找更简单的方法:Vba 通过项目ID更改项目的属性以进行形状动画,vba,Vba,例如,是否可以通过对象的ID发出命令来旋转形状或更改不同(布尔)设置(如可见性),或者是否需要事先选择? 就我所知,我必须在更改每个项目的特征/数据之前选择一个“取消选择”选项 我的代码如下所示(将生成闪烁箭头的“动画”): 如果可能,我正在寻找更简单的方法: Private Sub timeout(duration_ms As Double) Start_Time = Timer Do DoEvents Loop Until (Timer - Start_Tim
Private Sub timeout(duration_ms As Double)
Start_Time = Timer
Do
DoEvents
Loop Until (Timer - Start_Time) >= duration_ms
End Sub
Private Sub cmd_blinking_Click()
rep_count = 0
Target = 400
blink = 0.3
Do Until rep_count = Target
DoEvents
rep_count = rep_count + 1
ActiveWindow.Shapes.ID(255).Visible = True
ActiveWindow.Shapes.ID(256).Visible = False
ActiveWindow.Shapes.ID(257).Visible = False
timeout (blink)
ActiveWindow.Shapes.ID(256).Visible = True
timeout (blink)
ActiveWindow.Shapes.ID(257).Visible = False
timeout (blink * 3)
ActiveWindow.Shapes.ID(255).Visible = False
ActiveWindow.Shapes.ID(256).Visible = False
ActiveWindow.Shapes.ID(257).Visible = False
timeout (blink * 0.9)
Loop
End Sub
对于在VBA
中查找“动画箭头”的任何人(如我所问):
该功能用于在单个对象/形状的外观之间进行暂停
之后,对象/形状需要更改其可见性
属性以产生“闪烁效果”
在我的示例中,我使用了三个带有特定给定名称的箭头(“Left\u Arrow\u 1”
,等等),这里必须插入对象名称。通过制作一个宏来插入对象并给它们定义名称,这使事情变得更容易
Sub timeout(duration_ms As Double)
Start_Time = Timer
Do
DoEvents
Loop Until (Timer - Start_Time) >= duration_ms
End Sub
Sub blinking_arrows()
rep_count = 0
target = 400
blink = 0.3
Do Until rep_count = target
DoEvents
rep_count = rep_count + 1
Sheet1.Shapes("Left_Arrow_1").Visible = True
Sheet1.Shapes("Left_Arrow_2").Visible = False
Sheet1.Shapes("Left_Arrow_3").Visible = False
timeout (blink)
Sheet1.Shapes("Left_Arrow_2").Visible = True
timeout (blink)
Sheet1.Shapes("Left_Arrow_3").Visible = True
timeout (blink * 3)
Sheet1.Shapes("Left_Arrow_1").Visible = False
Sheet1.Shapes("Left_Arrow_2").Visible = False
Sheet1.Shapes("Left_Arrow_3").Visible = False
timeout (blink * 0.9)
Loop
End Sub
你试过了吗?发生了什么?“运行时错误438:对象不支持此属性或方法”用于访问Visio对象的VBA完全错误。尝试使用ActivePage.Shapes.ItemFromID(255),而不是ActiveWindow.Shapes(这是不允许的),假设255等是正确的ID。如果没有,那么您的代码将停止工作。.Visible属性也不存在。我认为您需要下载并安装VisioSDK,并查看其中的示例。好的,我们将查找SDK
Sub timeout(duration_ms As Double)
Start_Time = Timer
Do
DoEvents
Loop Until (Timer - Start_Time) >= duration_ms
End Sub
Sub blinking_arrows()
rep_count = 0
target = 400
blink = 0.3
Do Until rep_count = target
DoEvents
rep_count = rep_count + 1
Sheet1.Shapes("Left_Arrow_1").Visible = True
Sheet1.Shapes("Left_Arrow_2").Visible = False
Sheet1.Shapes("Left_Arrow_3").Visible = False
timeout (blink)
Sheet1.Shapes("Left_Arrow_2").Visible = True
timeout (blink)
Sheet1.Shapes("Left_Arrow_3").Visible = True
timeout (blink * 3)
Sheet1.Shapes("Left_Arrow_1").Visible = False
Sheet1.Shapes("Left_Arrow_2").Visible = False
Sheet1.Shapes("Left_Arrow_3").Visible = False
timeout (blink * 0.9)
Loop
End Sub