Guten Abend zusammen,
ich habe mich seit kurzem mit der Makroprogrammierung auseinander gesetzt.
Stehe jetzt aber vor einem Problem das ich nicht gelöst bekomme und hoffe auf Hilfe
Ausgangspunkt:
Ich habe ein Makro (Sub) das mir vorher definierte Parameter in ein CatPart oder CatProduct schreibt.
Ich wollte dieses jetzt erweitern, dass ich in einem Produkt durch eine Userselection eines oder mehrere Bauteile auswähle und dann mit einer For-Schleife die einzelnen Einträge der Selektion an mein Sub CreateParameters übergebe.
Ich bekomme aber die Selectioneinträge nicht so konvertiert das Sie übergeben werden. D.h. ist ein CATPart im aktiven Dokument dann klappt es wunderbar
aber sobald ich versuche die Selection zu übergeben überspringt er die Zeile einfach
anbei der Abschnitt meines Makros:
If InStr(ActiveDoc.Name, ".CATPart") <> 0 Then
CreateParameters (ActiveDoc.Product)
ElseIf InStr(ActiveDoc.Name, ".CATProduct") <> 0 Then
Dim USel As Object
Dim Was(1)
Dim E As String
Was(0) = "Product"
Was(1) = "Part"
Set USel = ActiveDoc.Selection
USel.Clear
E = USel.SelectElement3(Was, "Ein oder mehrere Produkte/Parts auswählen", False, CATMultiSelTriggWhenUserValidatesSelection, False)
If E = "Normal" Then
MsgBox "Ausgewaehlte Elemente: " & CStr(USel.Count2), 64, Makroname + " " + version
Dim number, ind As Integer
Dim Bauteil As Variant
number = USel.Count2
For ind = 1 To number
Set Bauteil = USel.Item2(ind).Value
CreateParameters (Bauteil)
Next
Else
MsgBox "Abbruch"
Exit Sub
End If
USel.Clear
Else
MsgBox "ungültige Auswahl! Bitte ein Produkt oder Part öffnen", 16, Makroname + " " + version
Exit Sub
End If
und noch das Sub:
Sub CreateParameters(iProduct As Variant)
On Error Resume Next
Dim parameters, userParameters As parameters
Dim param As Parameter
Dim paramName, sInstanceName, sPartNumber As String
Dim RefProduct As Product
Dim nbParameters, ParaNumber, i, j As Integer
Dim lfound As Boolean
Set RefProduct = iProduct.ReferenceProduct
Set parameters = RefProduct.parameters
Set userParameters = RefProduct.UserRefProperties
nbParameters = RefParameters.Count
sInstanceName = iProduct.Name
sPartNumber = RefProduct.Name
Err.Clear
ParaNumber = UBound(Trikontxtpara)
For i = 0 To ParaNumber
Err.Clear
paramName = sPartNumber & "\Properties\" & Trikontxtpara(i)
'//---------------------------------------------------------------------------
'// Kontrollieren ob das Attribut bzw. Parameter bereits vorhanden ist
'//---------------------------------------------------------------------------
lfound = False
For j = 1 To userParameters.Count
If (userParameters.Item(j).Name = paramName) Then
lfound = True
End If
Next
If (lfound = False) Then
Set param = userParameters.CreateString(Trikontxtpara(i), "")
End If
Next
End Sub
Ich hoffe jemand versteht mein Problem und weiß die Lösung XD
Viele Grüße Wolle
------------------
Die Fantasie ist die einzige Waffe gegen die Realität.
[Diese Nachricht wurde von Wolle84 am 24. Nov. 2020 editiert.]
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP