Autor
|
Thema: Partnumber durchgehen (554 mal gelesen)
|
Makronizer Mitglied Dipl.-Ing Maschinenbau-Integrierte Produktentwicklung
Beiträge: 51 Registriert: 15.09.2009
|
erstellt am: 18. Nov. 2009 08:39 <-- editieren / zitieren --> Unities abgeben:
Guten Morgen allerseits, ich habe mal wieder ein Problem: folgendes Szenario: Ich will die Partnumber durchgehen und auf ein bestimmtes Maß ausweiten ohne die existierende Partnummer abzuändern. hört sich erstmal einfach an, ist es wahrscheinlich auch. Die Partnumber wollte ich mit einer For ... To... Step 1, Next durchgehen. For i = 0 To 30 Step 1 Teilebez = CATIA.Documents.Item(m).Product.PartNumber usw. Nun komme ich nicht weiter. Will Buchstabe für Buchstabe durchgehen und kleine Buchstaben in große abändern. Also erste Frage? Gibt es dafür einen Befehl? (klein zu groß?) zweites Problem: Teilebez = Left(CATIA.Documents.Item(m).Product.PartNumber, i + 1) liest leider alles aus, was von der der Stelle i + 1 links steht, will aber jeweils nur einen Buchstaben der Stelle i + 1 Würde es da gehen, einfach ein Right über die jetzige Teilebez einzufügen? Also Teilebez = Right(Teilebez, 1) oder so ähnlich? Leider schmeißt er mir da einen Fehler raus. EDIT: Mein Fehler, funktioniert mit Right... Schonmal vorab vielen Dank für eure Anregungen
Gruß Thomas [Diese Nachricht wurde von Makronizer am 18. Nov. 2009 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
RSchulz Moderator² Head of CAD, Content & Collaboration / IT-Manager
Beiträge: 5541 Registriert: 12.04.2007 @Work Lenovo P510 Xeon E5-1630v4 64GB DDR4 Quadro P2000 256GB PCIe SSD 512GB SSD SmarTeam V5-6 R2016 Sp04 CATIA V5-6 R2016 Sp05 E3.Series V2019 Altium Designer/Concord 19 Win 10 Pro x64
|
erstellt am: 18. Nov. 2009 09:26 <-- editieren / zitieren --> Unities abgeben: Nur für Makronizer
Hallo, das Umwandeln in Großbuchstaben sollte mit UCase gehen. Beispiel: Teilebez = UCase(CATIA.Documents.Item(m).Product.PartNumber) Zum Thema einzelne Buchstaben/Zeichen abrufen: Beispiel: For i = 0 to 30 Teilebez = CATIA.Documents.Item(m).Product.PartNumber msgbox Teilebez For j = 0 to Length(Teilebez) Buchstabe = Mid(Teilebez, j, 1) msgbox Buchstabe next next Hab es nicht ausprobiert, sollte aber so möglich sein. HTH ------------------ MFG Rick Schulz Nettiquette (CAD.de) - Was ist die Systeminfo? - Wie man Fragen richtig stellt. - Unities Konfuzius sprach: "Wer sich das Alte noch einmal vor Augen führt, um das Neue zu verstehen, der kann anderen ein Lehrer sein." [Diese Nachricht wurde von RSchulz am 18. Nov. 2009 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Makronizer Mitglied Dipl.-Ing Maschinenbau-Integrierte Produktentwicklung
Beiträge: 51 Registriert: 15.09.2009
|
erstellt am: 18. Nov. 2009 09:27 <-- editieren / zitieren --> Unities abgeben:
|
Makronizer Mitglied Dipl.-Ing Maschinenbau-Integrierte Produktentwicklung
Beiträge: 51 Registriert: 15.09.2009
|
erstellt am: 18. Nov. 2009 10:17 <-- editieren / zitieren --> Unities abgeben:
Bräuchte doch nochmal einen Denkanstoß: Bisheriger Ansatz: For m = 1 To CATIA.Documents.Count If (Right(CATIA.Documents.Item(m).Name, 10) = "CATProduct") Then Teilebez = CATIA.Documents.Item(m).Product.PartNumber Zahl1 = Len(Teilebez) For i = i To Zahl1 Teilebez = Left(CATIA.Documents.Item(m).Product.PartNumber, i) Teilebez = Right(Teilebez, 1) Teilebez = UCase(Teilebez) If Teilebez = "" Or Teilebez = " " Then Teilebez = "_" End If Teilebezneu = Teilebez ---> ???? Next End If Next Wie bekomme ich es an markierter Stelle hin, das Buchstabe für Buchstabe der Teilenummer hinzugefügt wird? Teilebez ist demnach der gefilterte Buchstabe. Heut irgendwie nen Brett vorm Kopp Gruß Thomas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
RSchulz Moderator² Head of CAD, Content & Collaboration / IT-Manager
Beiträge: 5541 Registriert: 12.04.2007 @Work Lenovo P510 Xeon E5-1630v4 64GB DDR4 Quadro P2000 256GB PCIe SSD 512GB SSD SmarTeam V5-6 R2016 Sp04 CATIA V5-6 R2016 Sp05 E3.Series V2019 Altium Designer/Concord 19 Win 10 Pro x64
|
erstellt am: 18. Nov. 2009 10:21 <-- editieren / zitieren --> Unities abgeben: Nur für Makronizer
Ich denke der Code ist selbsterklärend... For m = 1 To CATIA.Documents.Count If (Right(CATIA.Documents.Item(m).Name, 10) = "CATProduct") Then Teilebez = CATIA.Documents.Item(m).Product.PartNumber Zahl1 = Len(Teilebez) For i = i To Zahl1 Teilebez = mid(CATIA.Documents.Item(m).Product.PartNumber, i, 1) Teilebez = UCase(Teilebez) If Teilebez = " " Then Teilebez = "_" End If Teilebezneu = Teilebezneu & Teilebez Next End If Next ------------------ MFG Rick Schulz Nettiquette (CAD.de) - Was ist die Systeminfo? - Wie man Fragen richtig stellt. - Unities Konfuzius sprach: "Wer sich das Alte noch einmal vor Augen führt, um das Neue zu verstehen, der kann anderen ein Lehrer sein." [Diese Nachricht wurde von RSchulz am 18. Nov. 2009 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Makronizer Mitglied Dipl.-Ing Maschinenbau-Integrierte Produktentwicklung
Beiträge: 51 Registriert: 15.09.2009
|
erstellt am: 18. Nov. 2009 10:26 <-- editieren / zitieren --> Unities abgeben:
|
RSchulz Moderator² Head of CAD, Content & Collaboration / IT-Manager
Beiträge: 5541 Registriert: 12.04.2007 @Work Lenovo P510 Xeon E5-1630v4 64GB DDR4 Quadro P2000 256GB PCIe SSD 512GB SSD SmarTeam V5-6 R2016 Sp04 CATIA V5-6 R2016 Sp05 E3.Series V2019 Altium Designer/Concord 19 Win 10 Pro x64
|
erstellt am: 18. Nov. 2009 10:35 <-- editieren / zitieren --> Unities abgeben: Nur für Makronizer
Hmm irgendwie gefällt mir das nicht... Ich würde es so schreiben: For m = 1 To CATIA.Documents.Count If Instr(CATIA.Documents.Item(m).Name), ".CATProduct") = true Then Teilebez = CATIA.Documents.Item(m).Product.PartNumber Teilebez = UCase(Teilebez) Zahl1 = Len(Teilebez) For i = i To Zahl1 Buchstabe = mid(Teilebez, i, 1) If Buchstabe = " " Then Buchstabe = "_" End If Teilebezneu = Teilebezneu & Buchstabe Next End If Next Ich weis Korinthenkacker und so, aber alleine für die Übersicht und Geschwindigkeit, würde ich 2 mal etwas auslesen, wenn es mit einem mal abgetan ist und vorallem nicht eine Variable mehrfach für verschiedene Dinge verwenden. Die Benennung der Variablen würde ich zwar auch anders definieren, aber das sollte jedem selbst überlassen sein. ------------------ MFG Rick Schulz Nettiquette (CAD.de) - Was ist die Systeminfo? - Wie man Fragen richtig stellt. - Unities Konfuzius sprach: "Wer sich das Alte noch einmal vor Augen führt, um das Neue zu verstehen, der kann anderen ein Lehrer sein." Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Makronizer Mitglied Dipl.-Ing Maschinenbau-Integrierte Produktentwicklung
Beiträge: 51 Registriert: 15.09.2009
|
erstellt am: 18. Nov. 2009 10:42 <-- editieren / zitieren --> Unities abgeben:
Ja, ich bin da etwas eigen: ich benenne erstmal irgendwie, wenn das Makro dann läuft, dann benenne ich Variablen neu und füge die üblichen Zeilen hinzu, die sicheren Lauf garantieren. Das liegt allerdings an meiner nicht vorhandenen Makroprogrammierroutine. Beschäftige mich erst seit 3 Monaten damit. Gruß Thomas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Makronizer Mitglied Dipl.-Ing Maschinenbau-Integrierte Produktentwicklung
Beiträge: 51 Registriert: 15.09.2009
|
erstellt am: 18. Nov. 2009 13:54 <-- editieren / zitieren --> Unities abgeben:
Kurze Zwischenfrage, mit InStrRev kann man ja bekanntlich nach einem Zeichen, Zahl oder Buchstaben suchen. Gibt es da nen allgemeinen Befehl, wo man in einem String generell nach einem Buchstaben suchen kann? Konkretes Anwendungsbeispiel Partnumber = "00_test_123456" Ich möchte jetzt nur das Wort "test" als String haben. An sich nicht schwer, jedoch kann da ja auch mal "murks" oder "stein" stehen. Dachte an so nen Befehl wie If InstrRev ( CATIA.blabla.PartNumber, IsAlphabetic) Then Anweisung 1 ... End If Gruß Thomas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |