2015-10-06 34 views
0

我實際上遇到了以下代碼的困難。錯誤400 - 由對象的應用程序返回的錯誤 - Tableau(Range).Group

它瀏覽我的工作表的每個形狀,並且一旦他檢查了形狀的類型,他就在數組Tableau()中添加它的ID。

線返回錯誤是:

Set Sh = ActiveSheet.Shapes.Range(Tableau).group <== it might be a detail but VBA Editor doesn't change group by Group. 

這是下面的完整代碼:

Sub Select() 

    Dim Sh As Object 
    Dim Tableau() 
    Dim i As Integer 

    'Loop on the ActiveSheet Shapes 
    For Each Sh In ActiveSheet.Shapes 

     If Sh.Type <> msoFormControl Then 
      i = i + 1 
      ReDim Preserve Tableau(1 To i) 
      Tableau(i) = Sh.ID 
     End If 
    Next Sh 

    On Error GoTo Errorcatch 

    'Group shapes whom the ID is in the array 
    Set Sh = ActiveSheet.Shapes.Range(Tableau).group '<== Error 400 

    'Rename the group 
    Sh.name = "Group" & CStr(Rnd) 

    Sh.Copy 

Exit Sub 

Errorcatch: 
MsgBox Err.Description 

End Sub 
+1

您嘗試過'Tableau(i)= Sh.Name'嗎? – barrowc

+0

你有'Option Base 1'設置?否則,你對'I'和你的'ReDim Preserve ...'的指望就會消失。 –

+0

我也只是用'Sh.Name'測試它,它工作。 –

回答

0
Sub SelectA() 

Dim Sh As Object 
Dim Tableau() 
Dim i As Integer 

'Loop on the ActiveSheet Shapes 
For Each Sh In ActiveSheet.Shapes 
    If Sh.Type <> msoFormControl Then 

     ReDim Preserve Tableau(i) 
     Tableau(i) = Sh.Name 
     i = i + 1 
    End If 
Next Sh 

On Error GoTo Errorcatch 

'Group shapes whom the ID is in the array 
Set Sh = ActiveSheet.Shapes.Range(Tableau).Group 

'Rename the group 
Sh.Name = "Group" & CStr(Rnd) 

Sh.Copy 

Exit Sub 

Errorcatch: MSGBOX Err.Description

結束子

謝謝

相關問題