Vba 在for循环中选择Catia零件

Vba 在for循环中选择Catia零件,vba,vbscript,catia,Vba,Vbscript,Catia,我的For循环中有一个小错误,因为它不会选择我要着色的零件。我使用变量哈希将文档的所有名称都放在那里,然后尝试使用Catia函数着色,但仍然一无所获 下面是代码的一部分。 问题区域是选择案例。它实际上不会选择和颜色的部分,如果发现 更新:现在我确切地知道问题出在哪里了,在选择零件和给零件上色的过程中,问题就在箱子里面。不知何故,它甚至不会选择零件 For n = 1 To DokAnzahl Set Dokument = DokumentArray(n) ReDim Dokum

我的
For
循环中有一个小错误,因为它不会选择我要着色的零件。我使用变量哈希将文档的所有名称都放在那里,然后尝试使用Catia函数着色,但仍然一无所获

下面是代码的一部分。 问题区域是
选择案例
。它实际上不会选择和颜色的部分,如果发现

更新:现在我确切地知道问题出在哪里了,在选择零件和给零件上色的过程中,问题就在箱子里面。不知何故,它甚至不会选择零件

For n = 1 To DokAnzahl
    Set Dokument = DokumentArray(n)

    ReDim DokumentArrayNew(DokAnzahl)
    DokumentArrayNew(n)  = CStr(Dokument.Name)

    For j = 1 To UBound(arrNamen)
        If arrNamenNew(j) = Left(DokumentArrayNew(n), Len(arrNamenNew(1))) Then
            'MsgBox "They are equal!"
            hash = DokumentArrayNew(n)
            ColorCode(j) = arrFarben(j)
            'MsgBox ColorCode(j) checked

            m = j+1

            Select Case ColorCode(j)
                Case "NEU" 'rot
                    Set sel = catia.activedocument.selection
                    sel.search "Name =hash,all"
                    sel.visproperties.setRealColor 240, 1, 1, 1
                Case "entfällt" 'Gelb
                    Set sel = catia.activedocument.selection
                    sel.search "Name =hash,all"
                    sel.visproperties.setRealColor 240, 240, 16, 1
                Case "COP" 'Grün
                    Set sel = catia.activedocument.selection
                    sel.search "Name =hash,all"
                    sel.visproperties.setRealColor 30, 240, 60, 1
                Case Else
                    MsgBox "no color info"
            End Select
        End If
    Next
Next

您的
选择。Search
搜索的是单词
“Hash”
,而不是变量
Hash

将您的
Select Case
语句更改为:

Set sel = catia.activedocument.selection
sel.search "Name =*" & hash & "*,all"

将文档放入阵列DocumentArrayNew有什么意义?您可以立即使用文档对象,而数组似乎是不必要的。而且,文档是一个对象,当您将一个对象分配给哈希时,应该使用“Set”关键字。此外,不能将颜色指定给文档对象。通常为部件中的产品或零件中的实体指定颜色。文档名称不一定与部件中的零件号或零件名称匹配。小心点。主要的问题是,当你搜索时,你正在搜索一个名为“hash”的东西。您需要修复searh查询字符串,以便它包含您正在搜索的实例名称的值。首先,谢谢!我想这正是我的问题所在。实例名称与零件名称不匹配。有没有办法更改我的搜索查询,使其只查找instancenames?我尝试过这样做:hash=Left(DokumentArrayNew(n),len(DokumentArrayNew(n)-1)),我得到了错误类型冲突!但还是什么也没发生。