Hallo Nancy,
habe lange überlegt und viele Möglichkeiten durchgespielt, in wie fern ich dein Problem befriedigend lösen könnte.
1te Möglichkeit (ON Error)
---------------
Code:
Sub get_string()Dim strX As String
Dim strS As String
'tritt ein Fehler auf springt er in den ErrorHandler
On Error GoTo ErrorHandler
strX = ThisDrawing.Utility.GetString(1, "was eingeben oder nicht: ")
'fehlerbehandlung wieder ausschalten
On Error GoTo 0
'If IsEmpty(strX) Then
' MsgBox "cancel"
' Exit Sub
'End If
If Len(strX) = 0 Then
strS = "keine Eingabe"
Else
strS = strX
End If
MsgBox strS
Exit Sub
'da er in diesen Abschnitt des Codes trotzdem reinlaufen würde, wird vorher exit sub gesetzt
ErrorHandler:
Select Case Err.Number
Case "-2147352567"
MsgBox "Es wurde ESC gedrueckt ... Was nun?"
Case Else
MsgBox "Der Fehler ist unbehandelt"
End Select
'resume next macht mit der zeile nach dem fehler weiter
'resume versucht die zeile nochmals auszuführen, in der der fehler auftrat .. bis er nicht mehr auftritt ..
Resume Next
End Sub
... das gefiel Dir ja nicht, oder zumindest war das nicht deine Anforderung ..
2te Möglichkeit
---------------
Wäre ein Event zu registrieren, welches auf einen Tastendruck reagiert. Like 'OnKeyDown' ... usw. ... diese Möglichkeit besteht ja nur in Formularen. Wusst auch nicht so genau, wie man das machen konnte ausser mit der WinAPI ...
3te Möglichkeit
---------------
Einfach das drücken der EscapeTaste abzufangen und somit das Ereignis unwirksam zu machen. Hmmm ... riecht auch stark nach API ...
Die Lösung (ohne On Error!):
----------------------------
Ist eine Kombination aus 2 und 3. Es werden die bestehenden Hooks für die EscapeTaste abgefangen und bei einem OnKeyEvent ignoriert. Es wird also auf die deutsch die Funktionalität von Escape vorübergehend ausgehebelt, wenn die Taste betätigt wird.
Nen bissle Lektüre dazu findest Du unter ... http://dotnet.mvps.org/vb/articles/keyboardhook/ ...
Die Dll über die Verweise einbinden und nachfolgenden Code benutzen. Konnte es derzeit nur unter Acad 2002 testen!
Code:
Sub get_string() Dim esc As New ESCHook.clsEsc
esc.disable_esc
Dim x As String
x = ThisDrawing.Utility.GetString(1, "was eingeben oder nicht")
esc.enable_esc
End Sub
Ist keine schöne Lösung, aber eine ohne 'OnError' ..
Viele Grüsse TP
------------------
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP