Hallo Forum,
Ich habe eine Dialogbox. Nach Eingabe von Daten in ein Textfeld, drücke ich einen CMD-Button und das Programm macht was es soll.
Nun wollte ich die Anzahl der Klicks reduzieren und versuche das Drücken des Buttons wegzulassen, indem ich den Programmaufruf beim AfterUpdate Ereignis des Textfeldes ausführe.
Das Ergebnis ist ein Automatisierungsfehler (Laufzeitfehler '-2147147848 (80010108)' Das aufgerufene Objekt wurde von den clients getrennt.
Wenn ich Debuggen auswähle steht mein Programm im Modul beim Aufruf der Dialogbox. Wenn ich nun die Programmausführung beende, das stürzt Autocad ab. (SYSTEMFEHLER: Unhandled Access Violation Reading 0x0054 Exeption at 75a3a3h).
Was bedeuten die Fehlermeldungen und was mache ich Falsch ?
mfg Didi
anbei noch der Code .. (soll eigentlich nur einen Zoom Mittelpunkt auf einen Block ausführen, welcher den gesuchten Attributwert enthält)
Code:
'Code des Moduls
Option Explicit ' alle Variablen müssen deklariert werden
Option Base 0 ' FeldVariablen beginnen bei 0
Option Compare Text ' Textvergleich: Groß- Kleinschreibung wird NICHT beachtet
Sub ZoomAttributWert()
frmEingabe.Show
End Sub
'Code der Form
.
.
.
Private Sub txtAttWert_AfterUpdate()
Suchen
End Sub
.
.
.
Private Sub Suchen()
Me.hide
Meldung (vbCrLf & "ZoomAttributWert ... suche läuft ..." & vbCrLf)
zaehler = 0
For Each Object In ThisDrawing.ModelSpace
If Object.ObjectName = "AcDbBlockReference" Then
If Object.HasAttributes Then
varAttribute = Object.GetAttributes
For i = 0 To UBound(varAttribute)
If varAttribute(i).TagString = frmEingabe.txtAttName Or txtAttName = "*" Then
If varAttribute(i).TextString = frmEingabe.txtAttWert Then
zaehler = zaehler + 1
Meldung (vbCrLf & "ZoomAttributWert ... Treffer Nr: " & zaehler)
If zaehler > 1 Then
If MsgBox("Weitersuchen ?", vbYesNo) = vbNo Then
Unload Me
Exit Sub
End If
End If
objectInsert = Object.InsertionPoint
dblBlockInsert(0) = CDbl(objectInsert(0))
dblBlockInsert(1) = CDbl(objectInsert(1))
Meldung ("... gezoomt" & vbCrLf)
ThisDrawing.Application.ZoomCenter dblBlockInsert, 25
End If
End If
Next i
End If
End If
Next Object
If zaehler = 0 Then
MsgBox ("Kein Objekt mit enstprechendem Attribut vorhanden")
Me.Show
Else
Ende
End If
End Sub
.
.
.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP