2013-08-29 2 views
0

내 매크로는 하나의 특정 그룹의 도형에서만 ActiveWindow.Selection.shapeRange를 통과하기 때문에 "인덱스가 범위를 벗어났습니다"라는 오류를 발생시킵니다.Powerpoint VBA의 인덱스 범위를 벗어난 오류

은 특정 프레젠테이션 http://free-editable-worldmap-for-powerpoint.en.softonic.com에서 찾을 수 있습니다

(즉, 모양의 큰 그룹, 남미를 선택하고 오류를 복제하는 코드를 실행) 코드는 다음과 같습니다

을 : 또한

Dim shp As Shape 
For Each shp In ActiveWindow.Selection.shapeRange 
    shp.Fill.Transparency = 0 'Or any other code 
Next shp 

내가 성공하지 못한 For 루프를 사용하여 시도했습니다 ('For i = 1 To ActiveWindow.Selection.shapeRange.Count 1 단계'). 특히 오류가 발생하는 특별한 색인은 없습니다. 때로는 i = 3, 때로는 i = 35, 때로는 더 많습니다.

+0

좀 더 구체적으로 기재 할 수 있습니까? 나는 그 오류를 복제 할 수 없으며 실질적으로'For Each' 반복은'항상 색인이 범위를 벗어남 '오류를 우회해야합니다. 어떤 모양의 그룹이 문제를 일으키고 있습니까 **? –

답변

0

이 슬라이드에는 msoLine 모양이 있습니다 (shp.Type = 9). 그러면 오류가 발생합니다 :

The specified value is out of range.

실수로 선택했다면 오류가 발생합니다. (msoLine에 .Fill 구성원이 없으므로 Object does not support this property or method 오류가 발생하지만 오류 메시지가 암호화되어있는 경우가 있습니다. 어떤 경우이든이 오류는으로 트랩 될 수 있습니다.

해당 슬라이드의 다른 모든 모양은 .Fill을 지원하는 유형 5 또는 6입니다.

오류 설명을 잘못 입력하지 않는 한 특정 오류를 복제 할 수는 없지만 디버깅에는이 방법을 사용했습니다. 아마도 도움이 될 것입니다. 에 대한 Fill.Forecolor을 슬라이드의 모든 셰이프를 설정하려고 시도하고 오류에 대한 일부 정보를 VBE의 직접 실행 창에 인쇄합니다.

Sub Test() 
'Determine there are shapes which do not have a .Fill.ForeColor 
Dim shp As Shape 
For Each shp In ActivePresentation.Slides(1).Shapes 
    On Error Resume Next 
    shp.Fill.ForeColor.RGB = 43506 
    If Err.Number <> 0 Then 
     Debug.Print Err.Description & " >> " & _ 
      shp.Name & " is shape type " & shp.Type 
     On Error GoTo 0 
    Else: 
     shp.Fill.Transparency = 0 
     shp.Fill.ForeColor.RGB = 12632256 
    End If 
Next 

End Sub 
관련 문제