2013-07-26 50 views
1

你好我写了一个VBA宏来删除我如果方案我有84个,他们被命名为1,2,3,4,....,84所以我写了这个代码VBA方案Deleter宏只删除奇数

Sub Dismantle() 
For Count = 1 To 84 
    ActiveSheet.Scenarios(Count).Delete 
Next 

End Sub 

但它只是删除场景1,3,5,7,9 ......,83则返回错误:无法获得工作表类的场景属性。 这意味着它没有名称计数的情况下删除(我认为无论如何)
再次运行它删除第一个第三个ect再次,所以它跳过每第二个场景。

+2

当你删除场景#1,然后什么#2#现在1,依此类推。改为从84反向工作。 –

+0

哦,那好吧,它是如何解释它,我希望计数是该场景的名称,所以ActiveSheet.Scenarios(Count).Delete将删除名为count的场景。 –

+0

在你的情况下,“count”是一个数字,而不是一个字符串,所以你要按索引位置而不是名字来删除。如果你想按名称删除,那么你需要首先给每个场景一个不同的名字 - 例如“scen_001” –

回答

3
Sub Dismantle() 
    For Count = 84 to 1 step -1 
     ActiveSheet.Scenarios(Count).Delete 
    Next 
End Sub 

你是如此接近:-)

或者,更灵活:

Do While ActiveSheet.Scenarios.Count > 0 
    ActiveSheet.Scenarios(1).Delete() 
Loop