Я работаю над модификацией большого количества существующего кода, и после попытки go пройти через него, я сильно забочусь о том, что я знаю о VBA. Мой опыт написания кода в основном Python, и мне трудно обернуть голову вокруг структуры объекта и того, что является и не приемлемо в VBA.
Я пытаюсь изменить добавленные пользователем свойства (Добавить Дополнительные свойства в меню Свойства) для данного элемента, который выбирается пользователем. Этот код, как самостоятельный, будет делать то, что я ищу, хотя его интеграция в существующий код оказывается сложной. Как мне изменить следующий код так, чтобы я мог использовать его так, чтобы он не обязательно находился в своей собственной подпрограмме?
Sub CATMain()
GetNextNode CATIA.ActiveDocument.Product
End Sub
Sub GetNextNode(oCurrentProduct As Product)
Dim oCurrentTreeNode As Product
Dim i As Integer
' Loop through every tree node for the current product
For i = 1 To oCurrentProduct.Products.Count
Set oCurrentTreeNode = oCurrentProduct.Products.Item(i)
' Determine if the current node is a part, product or component
If IsPart(oCurrentTreeNode) = True Then
MsgBox oCurrentTreeNode.PartNumber & " is a part"
ElseIf IsProduct(oCurrentTreeNode) = True Then
MsgBox oCurrentTreeNode.PartNumber & " is a product" & i
Else
MsgBox oCurrentTreeNode.PartNumber & " is a component"
End If
' if sub-nodes exist below the current tree node, call the sub recursively
If oCurrentTreeNode.Products.Count > 0 Then
GetNextNode oCurrentTreeNode
End If
If oCurrentTreeNode.Products.Count = 0 Then
oCurrentTreeNode.ReferenceProduct.UserRefProperties.Item(1).Value = "Yippee!!!!!"
End If
Next
End Sub
Это моя попытка, и она игнорируется, когда Я поместил это в наш текущий текст. План состоит в том, чтобы заменить текущий способ, которым мы модифицируем существующие свойства, чтобы он мог читать через деревья CATIA и модифицировать отдельные детали и продукты. Кроме того, я попытался добавить createstring для создания нового пользовательского свойства для того, которого там нет. Это возвращает ошибку о том, что программа ожидает =. Любая помощь с благодарностью.
Dim oCurrentProduct As Product
Dim oCurrentTreeNode As Product
Dim i As Integer
' Loop through every tree node for the current product
For i = 1 To oCurrentProduct.Products.Count
Set oCurrentTreeNode = oCurrentProduct.Products.Item(i)
' Determine if the current node is a part, product or component
If IsPart(oCurrentTreeNode) = True Then
MsgBox oCurrentTreeNode.PartNumber & " is a part"
ElseIf IsProduct(oCurrentTreeNode) = True Then
MsgBox oCurrentTreeNode.PartNumber & " is a product" & i
Else
MsgBox oCurrentTreeNode.PartNumber & " is a component"
End If
' if sub-nodes exist below the current tree node, call the sub recursively
If oCurrentTreeNode.Products.Count > 0 Then
GetNextNode oCurrentTreeNode
End If
If oCurrentTreeNode.Products.Count = 0 Then
oCurrentTreeNode.ReferenceProduct.UserRefProperties.Item(1).Value = "Yippee!!!!!"
oCurrentTreeNode.ReferenceProduct.UserRefProperties.CreateString(Value, "Input")
End If
Next