Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 将Powerpoint中的形状从a点移动到B点_Vba_Excel_Powerpoint_Shapes - Fatal编程技术网

Vba 将Powerpoint中的形状从a点移动到B点

Vba 将Powerpoint中的形状从a点移动到B点,vba,excel,powerpoint,shapes,Vba,Excel,Powerpoint,Shapes,我是VBA新手,我正在尝试做一些对我来说很简单但很难实现的事情 背景: 我有一个包含20张幻灯片的PPT演示,每张幻灯片有21个形状,但最后一张。每次我想添加一个新形状时,它都会出现在第一张幻灯片上,因此我必须移动每个形状来为新形状腾出空间 我的问题是:我发现了如何使用此代码将形状移动到我想要的位置 With ActiveWindow.Selection.ShapeRange .Left = XXX 'change the number for desired x position .T

我是VBA新手,我正在尝试做一些对我来说很简单但很难实现的事情

背景:

我有一个包含20张幻灯片的PPT演示,每张幻灯片有21个形状,但最后一张。每次我想添加一个新形状时,它都会出现在第一张幻灯片上,因此我必须移动每个形状来为新形状腾出空间

我的问题是:我发现了如何使用此代码将形状移动到我想要的位置

With ActiveWindow.Selection.ShapeRange
  .Left = XXX 'change the number for desired x position
  .Top = XXX 'change the number for desired y position
End With
但是,只有当我选择上述第一个形状时,这才有效。 因为我有成百上千的形状,给它们命名来移动它们太费时了。所以我想做的是告诉VBA选择存在的形状:

.Left = 50
.Top = 50
然后把它移到那里

.Left = 140
.Top = 50
这看起来很简单,但不知何故我不知道怎么做。 这条线接近我想要的,但还不是很好


提前感谢。

您可以将形状添加到给定幻灯片中,从而减少移动该幻灯片的需要:

' Adds a shape to a given slide or if no slide passed, to the current slide in view
' Assumes code is running in PowerPoint VBE
Sub AddShapeToSlide(Optional oSld As Slide)
  If oSld Is Nothing Then Set oSld = ActiveWindow.View.Slide
  With oSld.Shapes.AddShape(msoShapeRectangle, 140, 50, 200, 200)
    .Name = "My New Shape"
    ' Apply other formatting here
  End With
End Sub

我想我明白了。哇,太快了。[code]如果.Type=msoAutoShape\uuu和.Left=50以及.Top=50,那么.Left=140.Top=50[/code]这就是我用来创建新形状的东西。但是,由于它应该取代已经存在的一个形状,我需要先移动旧的形状。例如:A B C D E F G我想创建一个新的形状,我将把它放在A当前所在的位置。所以我的目标是移动G,然后移动F到G所在的位置,E到F所在的位置等等,A到B所在的位置。然后添加新的形状。我设法用我在第一篇文章的评论中的代码做到了这一点。不过还是要谢谢你!!