2009-11-11 19 views
2

在VBA用於PowerPoint,據我所知,這個代碼獲取在活動窗口僅第一形狀,並推動它的具體內容的操作:VBA:如何執行上的陣列

Set oShape = oSlide.Shapes(1) 

oShape.Left = oShape.Left + 5 

如果我想推動所有的形狀,我會用這個循環。

但是,我怎樣才能根據它們的數量得到並且只移動某些形狀?

例如,假設我在活動窗口中只有3個形狀。如果我想推動形狀1和形狀3,但我不想觸摸形狀2,我該怎麼做?

回答

3

如果您想通過數字指定特定的形狀,使用這樣的:

For Each shapeNum In Array(1, 3, 5, 9, 10) 
    Set oShape = oSlide.Shapes(shapeNum) 

    oShape.Left = oShape.Left + 5 
Next shapeNum 

如果你只是想隨意移動一定的形狀,然後用這個:

For shapeNum = 1 To oSlide.Shapes.Count 
    If Rnd < 0.5 Then ''1 in 2 chance 
     Set oShape = oSlide.Shapes(shapeNum) 

     oShape.Left = oShape.Left + 5 
    End If 
Next shapeNum 

如果你想要別的東西,把細節添加到你的問題。

+0

WOW !!!謝謝你,Artelius!你答案的上半部分正是我想知道的。 – brilliant 2009-11-11 09:14:44

+0

也感謝Artelius的編輯,但是你不覺得在標題中必須保留「loop」這個詞嗎?許多像我這樣的noobs都知道詞彙循環,但他們可能不知道迭代的含義。我自己才知道迭代意味着僅在3天前使用循環! – brilliant 2009-11-12 08:42:53

+0

好點,因爲這是一個VBA問題。這個問題很難描述。但我認爲你對「迭代」是正確的。 – Artelius 2009-11-12 11:14:51