“运行时错误#1004:未找到指定的项目” - 通过首页和对象的循环

时间:2016-07-22 23:07:01

标签: excel-vba vba excel

我有10张名字从“1Store”到“10Store”的名单,并且在每张床单中,每人有10张人,每张16张照片,详情如下:

工作表“1Store”(总共2 x 8 x 10张图片,所有图片名称不同)

第1店铺的第1人:
- 2张名为“No1-1-A”,“Yes1-1-A”(保留给单元格“P16”)的图片
- 2张名为“No1-1-B”,“Yes1-1-B”(保留给单元格“P31”)的图片
(...)
- 2张名为“No1-1-H”,“Yes1-1-H”的图片(保留给单元格“P115”)

第一店的人2:
- 2张名为“No2-1-A”,“Yes2-1-A”的图片(保留给单元格“AE16”)
- 2张名为“No2-1-B”,“Yes2-1-B”(保留给单元格“AE31”)的图片
(...)
- 2张名为“No2-1-H”,“Yes2-1-H”的图片(保留给单元格“AE115”)

  

依旧...... ultil   

第一店的第10人:
- 2张名为“No10-1-A”,“Yes10-1-A”的图片(保留给单元格“FC16”)
- 2张名为“No10-1-B”,“Yes10-1-B”(保留给单元格“FC31”)的图片
(...)
- 2张名为“No10-1-H”,“Yes10-1-H”的图片(保留给单元格“FC115”)

  

然后纸张继续直到表单“10Store”,如下所示:

工作表“10Store”(总共2 x 8 x 10张图片,所有图片都有不同的名称)

第10店铺的第1人:
- 2张名为“No1-10-A”,“Yes1-10-A”(保留给单元格“P16”)的图片
- 2张名为“No1-10-B”,“Yes1-10-B”的图片(保留给单元格“P31”)
(...)
- 2张名为“No1-10-H”,“Yes1-10-H”的图片(保留给单元格“P115”)

第10店铺的第2人:
- 2张名为“No2-10-A”,“Yes2-10-A”的图片(保留给单元格“AE16”)
- 2张名为“No2-10-B”,“Yes2-10-B”的图片(保留给单元格“AE31”)
(...)
- 2张名为“No2-10-H”,“Yes2-10-H”的图片(保留给单元格“AE115”)

第10店铺的第10人:
- 2张名为“No10-10-A”,“Yes10-10-A”的图片(保留给单元格“FC16”)
- 2张名为“No10-10-B”,“Yes10-10-B”(保留给单元格“FC31”)的图片
(...)
- 2张名为“No10-10-H”,“Yes10-10-H”的图片(保留给单元格“FC115”)

  

...如在第1人(单元格P),第2人(单元格AE),第3条(单元格AU),   人4(细胞BK),人5(细胞CA),人6(细胞CQ),人7   (细胞DG),人8(细胞DW),人9(细胞EM),人10(细胞FC)*

[问题]:我收到“VBA运行时错误1004:找不到指定的项目。”所有图片都在那里并命名。我该如何使用该脚本?

Sub test()
Dim i,j As Integer
i=1 'Store
j=1 'Person
For i = 1 To 10
  For j = 1 to 10

    If Sheets("" & i & "Store").Range("P16").Value = 0 Then

        Sheets("" & i & "Store").Shapes.Range(Array("No"  & j & "-" & i & "-A")).Visible = True
        Sheets("" & i & "Store").Shapes.Range(Array("Yes" & j & "-" & i & "-A")).Visible = False
    Else
        Sheets("" & i & "Store").Shapes.Range(Array("No"  & j & "-" & i & "-A")).Visible = False
        Sheets("" & i & "Store").Shapes.Range(Array("Yes" & j & "-" & i & "-A")).Visible = True

    End if

    If Sheets("" & i & "Store").Range("P31").Value = 0 Then

        Sheets("" & i & "Store").Shapes.Range(Array("No"  & j & "-" & i & "-B")).Visible = True
        Sheets("" & i & "Store").Shapes.Range(Array("Yes" & j & "-" & i & "-B")).Visible = False
    Else
        Sheets("" & i & "Store").Shapes.Range(Array("No"  & j & "-" & i & "-B")).Visible = False
        Sheets("" & i & "Store").Shapes.Range(Array("Yes" & j & "-" & i & "-B")).Visible = True

    End if

      (...) 

    If Sheets("" & i & "Store").Range("FC115").Value = 0 Then

        Sheets("" & i & "Store").Shapes.Range(Array("No"  & j & "-" & i & "-H")).Visible = True
        Sheets("" & i & "Store").Shapes.Range(Array("Yes" & j & "-" & i & "-H")).Visible = False
    Else
        Sheets("" & i & "Store").Shapes.Range(Array("No"  & j & "-" & i & "-H")).Visible = False
        Sheets("" & i & "Store").Shapes.Range(Array("Yes" & j & "-" & i & "-H")).Visible = True

    End if

      (...) Above, it correlates all 10 Persons with all 10 stores (from P16-A,..., FC115-H) 

       Next j
   Next i

End Sub

1 个答案:

答案 0 :(得分:0)

From the documentation:“可以是指定形状索引号的整数,指定形状名称的字符串,或包含整数或字符串的数组。”除非您的形状名为“是”,“否”,1,2等,否则Array调用不会执行任何操作。您只需要执行简单的连接:

Sheets(i & "Store").Shapes.Range("No"  & j & "-" & i & "-A").Visible = True