| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS |
| |
| SOLIDWORKS PDM Professional im Einsatz bei Wölfle, ein Anwenderbericht
|
Autor
|
Thema: Übergabe eines Parameters (485 / mal gelesen)
|
Nobody1976 Mitglied
Beiträge: 46 Registriert: 20.05.2014 SWX 2022 SP5.0
|
erstellt am: 03. Aug. 2022 16:52 <-- editieren / zitieren --> Unities abgeben:
Hallo Forum, ich bin mir nicht ganz sicher ob ich hier richtig bin. Wenn nicht bitte Info dann verschiebe ich es natürlich. Ich habe die unten eingefügte Funktion erstellt. Läuft auch wunderbar.
Code: Function ListeAuslesen(Liste As Variant)Dim Ergebniss As String Dim I As Single With lsb_Produktfamilie For I = 0 To .ListCount - 1 If .Selected(I) Then If Len(Ergebniss) <> 0 Then Ergebniss = Ergebniss & ";" End If Ergebniss = Ergebniss & .List(I) End If Next End With ListeAuslesen = Ergebniss End Function
Dieser Code liest ein Listenfeld aus und baut einen String zusammen aus allen gewählten Einträgen. Wie ihr seht möchte ich aber der Funktion die zu bearbeitende Liste übergeben. Jedoch habe ich keine Ahnung wie ich das deklarieren muss damit ich in der With Anweisung eine Variabel benutzen kann. Kann mir da jemand weiterhelfen? Gruß Udo [Diese Nachricht wurde von Nobody1976 am 03. Aug. 2022 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
R3vo Mitglied staatl. gepr. Techniker, Konstrukteur
Beiträge: 125 Registriert: 03.11.2021 CAD: SOLIDWORKS 2024 SP3.1 PDM: SpeedyPDM 7.5.7 ------------------------ CPU: Intel Core i7-10700 @ 2.90GHz GPU: NVIDIA Quadro RTX4000 RAM: 64 GB Datenträger: SSD
|
erstellt am: 03. Aug. 2022 18:35 <-- editieren / zitieren --> Unities abgeben: Nur für Nobody1976
Hallo, nicht ganz das richtige Forum. Die Variable Liste die du der Funktion übergibts müsste eigentlich innerhalb der Funktion vorhanden sein. Hab aber zur Zeit nicht die Möglichkeit das auch zu testen. Code: With Liste for I = 0 to .....
[Diese Nachricht wurde von R3vo am 03. Aug. 2022 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Nobody1976 Mitglied
Beiträge: 46 Registriert: 20.05.2014 SWX 2022 SP5.0
|
erstellt am: 04. Aug. 2022 07:43 <-- editieren / zitieren --> Unities abgeben:
Morgen natürlich. Mein Fehler. Der Parameter lsb_Produktfamilie muss natürlich durch Liste ersetzt werden. Aber genau da haperts bei mir. Wenn ich das mache klappt nichts mehr. Der Code funktioniert aktuell nur für die Listbox lsb_Produktfamilie. Gruß Udo Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
R3vo Mitglied staatl. gepr. Techniker, Konstrukteur
Beiträge: 125 Registriert: 03.11.2021 CAD: SOLIDWORKS 2024 SP3.1 PDM: SpeedyPDM 7.5.7 ------------------------ CPU: Intel Core i7-10700 @ 2.90GHz GPU: NVIDIA Quadro RTX4000 RAM: 64 GB Datenträger: SSD
|
erstellt am: 04. Aug. 2022 08:06 <-- editieren / zitieren --> Unities abgeben: Nur für Nobody1976
Was wäre denn wenn du den Namen der ListBox als String übergibst und dir dann das Objekt der ListBox in der Funktion holst. Das Problem ist zur Zeit das deine Liste ein Variant ist, deine ListBox aber eben eine Control. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Nobody1976 Mitglied
Beiträge: 46 Registriert: 20.05.2014 SWX 2022 SP5.0
|
erstellt am: 04. Aug. 2022 09:18 <-- editieren / zitieren --> Unities abgeben:
Morgen, habs hinbekommen. Das ist der funktionierende Code:
Code: Function ListeAuslesen(ByRef Liste As MSForms.Control)Dim Ergebniss As String Dim I As Single With Liste For I = 0 To .ListCount - 1 If .Selected(I) Then If Len(Ergebniss) <> 0 Then Ergebniss = Ergebniss & ";" End If Ergebniss = Ergebniss & .List(I) End If Next End With ListeAuslesen = Ergebniss End Function
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
riesi Mitglied CAD-Admin
Beiträge: 1087 Registriert: 06.05.2002 SWX Premium 2023-Sp5
|
erstellt am: 04. Aug. 2022 09:56 <-- editieren / zitieren --> Unities abgeben: Nur für Nobody1976
Da Du die Anzahl der Elemente der Liste kennst, kann auch über einen Array gehen und anschließend zum String. Code:
If .Selected(idx) Then Dim ergebnisse ergebnisse = Array(CStr(.List(idx, 0), CStr(.List(idx, 1), CStr(.List(idx, 2)) Dim ergebnis As String ergebnis = Join(ergebnisse, ";") End If
[Diese Nachricht wurde von riesi am 04. Aug. 2022 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |