Kirk1701A - Di 12.11.19 20:30
Titel: VBA - Nach Buttonklick stimmt was nicht
Hallo zusammen,
nach einiger Zeit, bin ich wieder aktiv hier (YAY :dance2: :beer:). Ich bin gerade dabei, für meine Präsentation, die ich in der Schule halten werde, ein Testprogramm zu schreiben, um das vorführen zu können. Das Thema ist VBA.
Ich habe es so geregelt, dass das Dokument einen Button besitzt, der beim Klick den UserForm öffnet. Es ist nur was ganz simples. Wenn ich das UserForm schließe, stürzt mir mein ganzes Makro ab und gibt mir folgende Fehlermeldung:
"Laufzeitfehler '-2147352573 (80020003)':
Das angegebene Makro kann nicht ausgeführt werden."
Das passiert aber nur, wenn ich das Makro via Button starte. Hier das ClickEvent des Buttons, das im Dokument sitzt:
Quelltext
1: 2: 3:
| Private Sub cmdStartMacro_Click() Application.Run MacroName:=StartMakro End Sub |
Dieses "StartMakro" ist eine Function, die sich in einem extra Modul befindet. Ich habe so etwas schon eimal gemacht, ist aber erstens zu lange her (Alzheimer lässt grüßen :gruebel: :gruebel: :gruebel:) und ich habe das Projekt auch nicht mehr. Hier ist das "StartMakro":
Quelltext
1: 2: 3:
| Public Function StartMakro() Form.Show End Function |
Hier ist dann auch noch der gesamte restliche Code, der sich im Form befindet:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46:
| Public name As String Public age As Integer Public town As String Public class As String Public school As String Public ageCorrect As Boolean
Private Sub cmdTransfer_Click() ageCorrect = False
'Werte der Textfelder in Variablen übergeben name = Me.tbName.Text town = Me.tbTown.Text class = Me.tbClass.Text school = Me.tbSchool.Text 'Errorhandling On Error GoTo NumberError age = CInt(Me.tbAge.Text) ageCorrect = True 'Abfangen von möglichen Fehleingaben If age < 0 Then Call MsgBox("Es wurde eine negative Zahl eingegeben!" & vbCrLf & "Es sind lediglich positive, ganze Zahlen erlaubt.", vbCritical + vbOKOnly, "Error - Negative number") Exit Sub ElseIf age > 116 Then Call MsgBox("Die Möglichkeit, dass Ihr Alter wirklich " & age & " beträgt, ist zu gering. Dies wird als ungültige Eingabe gewertet!", vbCritical + vbOKOnly, "Error - Too high number") Exit Sub End If ActiveDocument.Bookmarks("Name").Range.InsertAfter name ActiveDocument.Bookmarks("Age").Range.InsertAfter CStr(age) ActiveDocument.Bookmarks("Town").Range.InsertAfter town ActiveDocument.Bookmarks("Class").Range.InsertAfter class ActiveDocument.Bookmarks("NameOfSchool").Range.InsertAfter school Call MsgBox("Die Daten wurden erfolgreich in das Dokument geschrieben.", vbInformation, "Success - Write into document") Unload (Form) NumberError: 'Entweder wurde nichts oder ungültige Zeichen eingegeben If ageCorrect = False Then Call MsgBox("Es wurde eine ungültige Eingabe festgestellt! Bitte versuchen Sie es erneut." & vbCrLf & "Es sind lediglich positive, ganze Zahlen erlaubt.", vbCritical + vbOKOnly, "Error - Invalid input") Exit Sub End If End Sub |
Im Anhang ist dann auch noch ein Screenshot meines Forms zu sehen. Was genau mach ich falsch, oder stehe ich bloß auf dem Schlauch? :gruebel: :gruebel: :autsch: :autsch: :lupe: :lupe:
Hier ist mein Form zu sehen, welches ich verwende. Mehr Code oder Bilder gibt es nicht... Das ist alles :-) (PNG, 4.18 KB)
Danke jetzt schonmal :) :)
LLAP
Euer Kirk
P.S.
Ich weiß, das ist nicht gerade das schönste ExceptionHandling, aber es wird nur einmal von mir vor der Klasse benutzt für 3 Minuten und das war's auch schon. Danach könnte man es echt wegwerfen :lol: