Autor
|
Thema: Strings und Integer (3356 mal gelesen)
|
MichaelTreiber Mitglied Technischer Produktdesigner
Beiträge: 63 Registriert: 26.01.2011 Win XP/7 (64 Bit) Catia V5R18
|
erstellt am: 31. Jan. 2011 13:21 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, der Neue hat mal wieder eine Frage da ich ja relativ neu im Bereich VBA bin, habe ich mich im Netz mal schlau gemacht, wie der Befehl für die Umwandlung von einem String in einen Integer aussieht, aber erstmal sollte ich euch generell mein Problem erklären: Ich versuche über VBA eine UserForm zu erstellen in der ich 3 Textboxes habe, die für die Höhe,Breite,Länge eines Würfels stehen. Sprich wenn ich auf den Button meiner Form klicke soll das Programm auf die eingetippten Werte der Textboxes zurückgreifen und diese als Werte übernehmen. Wenn ich das richtig verstanden habe ist die jeweilige Caption jedoch ein String, und ich befürchte, dass ich einen Integer Wert brauche. Hier mein Code: Code: Dim Zahl As Integer Dim Text As StringText = tbHoehe.Caption Zahl = CInt(Text) length1.Value = Zahl
So habe ich den Code im Internet gefunden (halt nun mit meinen Variablen eingefügt), jedoch meckert er bei der Zeile "Zahl = CInt(Text) Kann mir jemand vielleicht helfen? Danke im Vorraus ------------------ Grüße aus dem schönen Düsseldorf Michael Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Christian.O Mitglied Konstrukteur
Beiträge: 1212 Registriert: 17.07.2009
|
erstellt am: 31. Jan. 2011 13:33 <-- editieren / zitieren --> Unities abgeben: Nur für MichaelTreiber
Servus, warum tbHoehe.Caption? Caption steht doch für die Überschrift deiner Userform. Sprich der Fensternamen deiner Userform. Wenn du 3 Textboxen hast dann sollte das tbHoehe.Text heißen. Dann solltest du auch keine Fehlermeldung mehr erhalten. ------------------ Mit freundlichen Grüßen aus Tirol Christian Obholzer 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: 31. Jan. 2011 13:40 <-- editieren / zitieren --> Unities abgeben: Nur für MichaelTreiber
Zitat: Original erstellt von MichaelTreiber: Hier mein Code:Code: Dim Zahl As Integer Dim Text As StringText = tbHoehe.Caption Zahl = CInt(Text) length1.Value = Zahl
Wieso .Caption? Das ist die Überschrift des Textfeldes und diese dürfte wohl aus Buchstaben bestehen, die du nicht einfach umwandeln kannst. Ich würde dir auch empfehlen, bei Eingabe eine Prüfung einzubauen, die sicherstellt, dass lediglich Zahlen eingeben werden können. Ich gehe davon aus, dass es wohl eher so aussehen sollte...
Code: Dim Zahl As Integer Dim Text As StringText = tbHoehe.text Zahl = CInt(Text) length1.Value = Zahl
Edit: Christian war schneller ------------------ MFG Rick Schulz Nettiquette (CAD.de) - Was ist die Systeminfo? - Wie man Fragen richtig stellt. - Unities Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MichaelTreiber Mitglied Technischer Produktdesigner
Beiträge: 63 Registriert: 26.01.2011 Win XP/7 (64 Bit) Catia V5R18
|
erstellt am: 31. Jan. 2011 13:48 <-- editieren / zitieren --> Unities abgeben:
|
MichaelTreiber Mitglied Technischer Produktdesigner
Beiträge: 63 Registriert: 26.01.2011 Win XP/7 (64 Bit) Catia V5R18
|
erstellt am: 31. Jan. 2011 14:13 <-- editieren / zitieren --> Unities abgeben:
Hallo nochmal, ich habe nun den Befehl Caption in Text umgewandelt, jedoch meckert das Programm immernoch bei der selben Zeile, in der ich meiner "Text" Variable den Wert meiner Textbox zuweisen möchte. Vielleicht liegt mein Problem jedoch auch wo anders. Ich versuch euch einfach mal ein paar mehr Infos zu geben: Ich starte mein Programm über ein Modul mit dem Namen "Main" welches meine Userform aufruft. In der Userform aktiviere ich dann über einen Click auf meinen Button ein weiteres Modul über "Call Masse.CATMain" und dann folgt folgende Code-Reihe im aufgerufenen Modul: Code: Sub CATMain()Dim partDocument1 As PartDocument Set partDocument1 = CATIA.ActiveDocument Dim part1 As Part Set part1 = partDocument1.Part Dim parameters1 As Parameters Set parameters1 = part1.Parameters Dim length1 As Length Set length1 = parameters1.Item("Hoehe") Dim Zahl As Integer Dim Text As String Wort = tbHoehe.Text Zahl = CInt(Text) length1.Value = Zahl
Dazu muss ich sagen, dass wir das ganze über Makro aufzeichnen erstellt haben und alles funktioniert hat, als in der letzten Zeile anstatt "Zahl" ein Zahlenwert (z.B. "130#") stand und die 4 Zeilen darüber noch nicht vorhanden waren. Also hat er vorher die Höhe auf 130mm definiert. Ich wollte lediglich diese Zahl durch das Zurückgreifen auf eine Textbox ersetzen, damit man beliebige Größen über die Userform angeben kann. Mein Vermutung ist, dass ich doch kein Integer sondern eine "Length" Einheit brauche, aber wie gesagt bin ich neu und ich probiere seit ein paar Stunden rum und komme zu keinem Ergebnis. Vielleicht hat nun jemand meinen Fehler gefunden. Vielen Dank im Vorraus ------------------ Grüße aus dem schönen Düsseldorf Michael 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: 31. Jan. 2011 14:19 <-- editieren / zitieren --> Unities abgeben: Nur für MichaelTreiber
Zitat: Original erstellt von MichaelTreiber:
Code: Sub CATMain()Dim partDocument1 As PartDocument Set partDocument1 = CATIA.ActiveDocument Dim part1 As Part Set part1 = partDocument1.Part Dim parameters1 As Parameters Set parameters1 = part1.Parameters Dim length1 As Length Set length1 = parameters1.Item("Hoehe") Dim Zahl As Integer Dim Text As String Wort = tbHoehe.Text '<--- ????? Zahl = CInt(Text) length1.Value = Zahl
versuch es mal so...
Code: Sub CATMain()Dim partDocument1 As PartDocument Set partDocument1 = CATIA.ActiveDocument Dim part1 As Part Set part1 = partDocument1.Part Dim parameters1 As Parameters Set parameters1 = part1.Parameters Dim length1 As Length Set length1 = parameters1.Item("Hoehe") Dim Zahl As Integer Dim Text As String Text = tbHoehe.Text Zahl = CLng(Text) ' wandelt den Datentyp in das Format Long um length1.Value = Zahl
Wenn du mit Nachkommastellen arbeitest, dann kannst du nicht Integer nehmen, da diese lediglich Ganzzahlig ist. ------------------ MFG Rick Schulz Nettiquette (CAD.de) - Was ist die Systeminfo? - Wie man Fragen richtig stellt. - Unities Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MichaelTreiber Mitglied Technischer Produktdesigner
Beiträge: 63 Registriert: 26.01.2011 Win XP/7 (64 Bit) Catia V5R18
|
erstellt am: 31. Jan. 2011 14:28 <-- editieren / zitieren --> Unities abgeben:
Das mit dem Wort anstatt Text war ein Versehen, hatte zwischendurch was anderes ausprobiert. Sollte natürlich der gleiche Name sein. Habe deine Variante nun auch ausprobiert, jedoch meckert er schon wieder bei der Zeile wo ich meiner String Variable den Wert zuweise. Ich komme ja nichtmal zu Length.value , da er den Wert nicht akzeptiert. Vielleicht übersehe ich einfach ein klitzekleines Detail... ------------------ Grüße aus dem schönen Düsseldorf Michael 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: 31. Jan. 2011 14:33 <-- editieren / zitieren --> Unities abgeben: Nur für MichaelTreiber
sorry, ich habe etwas wichtiges aber entscheidendes vergessen... Code: Sub CATMain()Dim partDocument1 As PartDocument Set partDocument1 = CATIA.ActiveDocument Dim part1 As Part Set part1 = partDocument1.Part Dim parameters1 As Parameters Set parameters1 = part1.Parameters Dim length1 As Length Set length1 = parameters1.Item("Hoehe") Dim Zahl As Long Dim Text As String Text = tbHoehe.Text Zahl = CLng(Text) ' wandelt den Datentyp in das Format Long um length1.Value = Zahl
Übrigens wäre es sehr hilfreich, wenn du einen Screenshot des Fehlers oder den genauen Inhalt mit posten würdest. ------------------ MFG Rick Schulz Nettiquette (CAD.de) - Was ist die Systeminfo? - Wie man Fragen richtig stellt. - Unities Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MichaelTreiber Mitglied Technischer Produktdesigner
Beiträge: 63 Registriert: 26.01.2011 Win XP/7 (64 Bit) Catia V5R18
|
erstellt am: 31. Jan. 2011 14:46 <-- editieren / zitieren --> Unities abgeben:
Funktioniert wieder nicht. Habe nun 2 Bilder hinzugefügt: Das erste zeigt zum einen mein Userface wo ich die Zahlen eingebe, und zum anderen den Fehler den er anzeigt wenn ich auf den Button klicke. Das zweite Bild zeigt dann die Zeile an , wo der Fehler liegen soll, wenn ich auf Debug klicke.
------------------ Grüße aus dem schönen Düsseldorf Michael 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: 31. Jan. 2011 14:53 <-- editieren / zitieren --> Unities abgeben: Nur für MichaelTreiber
|
MichaelTreiber Mitglied Technischer Produktdesigner
Beiträge: 63 Registriert: 26.01.2011 Win XP/7 (64 Bit) Catia V5R18
|
erstellt am: 31. Jan. 2011 15:04 <-- editieren / zitieren --> Unities abgeben:
Stimmt, das ergibt Sinn. Also müsste ich quasi den gesamten Code nicht über ein Modul aufrufen sondern einfach den gesamten Code (ohne Sub CATMain) in btWuerfel.Click packen? Seh ich das richtig? ------------------ Grüße aus dem schönen Düsseldorf Michael Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MichaelTreiber Mitglied Technischer Produktdesigner
Beiträge: 63 Registriert: 26.01.2011 Win XP/7 (64 Bit) Catia V5R18
|
erstellt am: 31. Jan. 2011 15:08 <-- editieren / zitieren --> Unities abgeben:
|