| |
 | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
 | Von Digital Twins bis Hochleistungs-Computing: PNY präsentiert seine Zukunftstechnologien für die Industrie von morgen, eine Pressemitteilung
|
Autor
|
Thema: InputBox - Fehlerbehandlung (1364 mal gelesen)
|
MA28 Mitglied Bautechnischer Zeichner

 Beiträge: 53 Registriert: 17.03.2003 W2k pro 5.0.2195 SP3; AutoCAD 2002; HP DesignJet 750c & 800
|
erstellt am: 08. Feb. 2007 14:29 <-- editieren / zitieren --> Unities abgeben:         
habe in meinem Makro eine Usereingabe per Inputbox! Code: strRadius = InputBox("geben sie bitte den Radius ein:", "Vorziehung", "4") If strRadius = "" Then GoTo ende:
1. wenn der User auf Abbrechen klickt, ist der Wert "" und ich würde in späterer Folge einen Fehler im Makro haben. Das fange ich mit if then ab. 2. Einen Vorgabewert gebe ich vor, damit bei ok nicht "unbedingt" das selbe wie bei Abrechen passiert! der user kann aber immer noch "" an das Programm zurückgeben. was das selbe wie in punkt 1.zur folge bin gerade etwas ratlos und bin mir auch nicht ganz sicher wie ich meine Frage stellen soll!! 
könnte man es mit der inputbox erkennen, ob ok oder abbrechen gedrückt wurde?? ------------------ mfG Gambrinus Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Stelli1 Moderator Verm.-Ing.
    
 Beiträge: 1526 Registriert: 17.08.2005 Map 2000-2014, Rasterdesign, MapGuide, Autodesk Topobase, VS6, VS.net 2013
|
erstellt am: 08. Feb. 2007 17:39 <-- editieren / zitieren --> Unities abgeben:          Nur für MA28
Hallo, ich würde mir hierzu ein eigenes Formular machen. Da hast du in der Hand was für Werte man in das Feld einträgt und kannst auch auswerten was für eine Taste gedrückt wurde. Zusätzlich könnte noch ein Button rein mit dem man den Wert in AutoCAD abgreifen kann. Vielleicht sollest du überlegen ob du nicht eh zuerst ein Formular mit Skizze öffnest. Darin sind dann alle Eingabemöglichkeiten die der Benutzer nach und nach in beliebiger Reihenfolge eingeben kann. Stelli ------------------ Warum lisp'eln wenn's auch anders geht. www.ib-stelberg.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Nepumuk Mitglied Entwicklungsleiter
 
 Beiträge: 351 Registriert: 16.10.2004
|
erstellt am: 08. Feb. 2007 23:05 <-- editieren / zitieren --> Unities abgeben:          Nur für MA28
Hallo Gambrinus, so: Code: Public Sub test() Dim strRadius As String strRadius = InputBox("geben sie bitte den Radius ein:", "Vorziehung", "4") If StrPtr(strRadius) = 0 Then MsgBox "Abbrechen gedrückt" ElseIf strRadius = "" Then MsgBox "Nix eingegeben" End If End Sub
------------------ Gruß Nepumuk  Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MA28 Mitglied Bautechnischer Zeichner

 Beiträge: 53 Registriert: 17.03.2003 W2k pro 5.0.2195 SP3; AutoCAD 2002; HP DesignJet 750c & 800
|
erstellt am: 09. Feb. 2007 08:05 <-- editieren / zitieren --> Unities abgeben:         
Zitat: ich würde mir hierzu ein eigenes Formular machen
daran habe ich auch schon gedacht! traue ich mich aber noch nicht drüber, will mal ohne auskommen!! aber später führt sicher kein weg daran vorbei!! ------------------ mfG Gambrinus Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MA28 Mitglied Bautechnischer Zeichner

 Beiträge: 53 Registriert: 17.03.2003 W2k pro 5.0.2195 SP3; AutoCAD 2002; HP DesignJet 750c & 800
|
erstellt am: 09. Feb. 2007 08:08 <-- editieren / zitieren --> Unities abgeben:         
|
Nepumuk Mitglied Entwicklungsleiter
 
 Beiträge: 351 Registriert: 16.10.2004
|
erstellt am: 09. Feb. 2007 09:35 <-- editieren / zitieren --> Unities abgeben:          Nur für MA28
Hallo Gambrinus, die Funktion liest den Pointer der Variablen im Stackframe aus. Wenn auf Abbrechen gedrückt wurde, wird im Stack kein Wert hinterlegt und der Pointer meldet 0 zurück. ------------------ Gruß Nepumuk  Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Stelli1 Moderator Verm.-Ing.
    
 Beiträge: 1526 Registriert: 17.08.2005 Map 2000-2014, Rasterdesign, MapGuide, Autodesk Topobase, VS6, VS.net 2013
|
erstellt am: 09. Feb. 2007 10:00 <-- editieren / zitieren --> Unities abgeben:          Nur für MA28
Hallo, wenn du es ohne Formular machst dann solltest du aber auch auf InpotBoxen verzichten. Du kannst die Werte ja auch auf der Kommandozeile abfragen. Dann hast du direkt auch eine Typprüfung. z.B. Thisdrawing.Utility.GetString Thisdrawing.Utility.GetReal Thisdrawing.Utility.GetInteger Dann braucht der Benutzer nicht noch die Position der Inputbox suchen. Stelli ------------------ Warum lisp'eln wenn's auch anders geht. www.ib-stelberg.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |

| |
MA28 Mitglied Bautechnischer Zeichner

 Beiträge: 53 Registriert: 17.03.2003 W2k pro 5.0.2195 SP3; AutoCAD 2002; HP DesignJet 750c & 800
|
erstellt am: 09. Feb. 2007 10:04 <-- editieren / zitieren --> Unities abgeben:         
Zitat: Original erstellt von Nepumuk: Hallo Gambrinus,die Funktion liest den Pointer der Variablen im Stackframe aus. Wenn auf Abbrechen gedrückt wurde, wird im Stack kein Wert hinterlegt und der Pointer meldet 0 zurück.
super! danke für die Anwort ... war aber auch schon fast so weit (glaube ich zu mindest)  mit der Hilfe(F1) und einem VBA-Buch, bin ich dem Ganzen schon auf der Spur gewesen!! wobei ich diese Funktion nicht gefunden habe
Code: StrPtr()
eben nur
Code: StrComp()
usw.aber jetzt ist es mir klar! Danke
------------------ mfG Gambrinus Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |