Hallo liebes Forum,
ich bin ein kompletter Neuling in VBA, vorweggesagt.
Ich arbeite an einem Worddokument, bei dem beim Öffnen ein Formular angezeigt wird, dessen Eingaben anschließend in Bookmarks übernommen werden. Soweit klappt es auch, allerdings nur solange ich keine IF-Verzweigungen verwende. Dann bekomme ich, beim Ausführen den Fehler: "Fehler beim Abschicken - Methode oder Datenobjekt nicht gefunden"
Im Code-Editor wird die Methode hervorgehoben, welche die IF-Verzweigung enthält. Sobald ich die Verzweigung auskommentiere, läuft alles wunderbar, daher schließe ich darauf, dass sie der Verursacher des Fehlers ist. Allerdings weiß ich nicht, was ich falsch mache, daher brauche ich eure Hilfe.
Es folgt mein Code. abschicken_Click() wird immer aufgerufen, wenn der Benutzer das Formular abschickt. In diesem Formular habe ich eine Checkbox, mit der man steuern kann, ob die Umsatzsteuer verrechnet werden soll, oder nicht (hier ist auch die IF-Verzweigung).
Private Sub abschicken_Click()
UpdateBookmark "sa_vorname", Me.sa_vorname.Value
UpdateBookmark "sa_nachname", Me.sa_nachname.Value
UpdateBookmark "sa_vorname2", Me.sa_vorname.Value
UpdateBookmark "sa_nachname2", Me.sa_nachname.Value
UpdateBookmark "sa_telefon", Me.sa_telefon.Value
UpdateBookmark "sa_email", Me.sa_email.Value
UpdateBookmark "kde_geehrter", Me.kde_geehrter.Value
UpdateBookmark "kde_anrede", Me.kde_anrede.Value
UpdateBookmark "kde_vorname", Me.kde_vorname.Value
UpdateBookmark "kde_nachname", Me.kde_nachname.Value
UpdateBookmark "kde_nachname2", Me.kde_nachname.Value
UpdateBookmark "kde_firma", Me.kde_firma.Value
UpdateBookmark "kde_strasse", Me.kde_strasse.Value
UpdateBookmark "kde_ort", Me.kde_ort.Value
UpdateBookmark "nr", Me.nr.Value
UpdateBookmark "nr2", Me.nr.Value
UpdateBookmark "datum", Me.datum.Value
UpdateBookmark "preis", Round(Me.preis.Value, 2)
If Me.check_ust.Value = "Wahr" Then
UpdateBookmark "ust", Me.ust.Value
UpdateBookmark "gesamtbetrag", Round(Me.preis.Value + Me.ust.Value, 2)
Else
UpdateBookmark "ust", "0,00"
UpdateBookmarks "gesamtbetrag", Me.preis.Value
End If
UpdateBookmark "projektname", Me.projektname.Value
UpdateBookmark "projektname2", Me.projektname.Value
Me.Repaint
formular.Hide
End Sub
Sub UpdateBookmark(BookmarkToUpdate As String, TextToUse As String)
Dim BMRange As Range
Set BMRange = ActiveDocument.Bookmarks(BookmarkToUpdate).Range
BMRange.Text = TextToUse
ActiveDocument.Bookmarks.Add BookmarkToUpdate, BMRange
End Sub
Ein weiterer Code-Snippet enthält ebenfalls eine Verzweigung und verursacht den gleichen Fehler:
Private Sub Document_Open()
formular.sa_vorname.Text = ActiveDocument.Bookmarks("sa_vorname").Range.Text
formular.sa_nachname.Text = ActiveDocument.Bookmarks("sa_nachname").Range.Text
formular.sa_telefon.Text = ActiveDocument.Bookmarks("sa_telefon").Range.Text
formular.sa_email.Text = ActiveDocument.Bookmarks("sa_email").Range.Text
formular.kde_geehrter.Text = ActiveDocument.Bookmarks("kde_geehrter").Range.Text
formular.kde_anrede.Text = ActiveDocument.Bookmarks("kde_anrede").Range.Text
formular.kde_vorname.Text = ActiveDocument.Bookmarks("kde_vorname").Range.Text
formular.kde_nachname.Text = ActiveDocument.Bookmarks("kde_nachname").Range.Text
formular.kde_firma.Text = ActiveDocument.Bookmarks("kde_firma").Range.Text
formular.kde_strasse.Text = ActiveDocument.Bookmarks("kde_strasse").Range.Text
formular.kde_ort.Text = ActiveDocument.Bookmarks("kde_ort").Range.Text
formular.nr.Text = ActiveDocument.Bookmarks("nr").Range.Text
formular.datum.Text = ActiveDocument.Bookmarks("datum").Range.Text
formular.preis.Text = ActiveDocument.Bookmarks("preis").Range.Text
If ActiveDocument.Bookmarks("ust").Range.Text = "0,00" Then
formular.check_ust.Value = False
Else
formular.check_ust.Value = True
formular.ust.Text = ActiveDocument.Bookmarks("ust").Range.Text
End If
formular.projektname.Text = ActiveDocument.Bookmarks("projektname").Range.Text
formular.Show
End Sub
Ich würde mich freuen, wenn ihr mir sagen könnt, was ich bei den Verzweigungen falsch mache.
Anforderungen an die Formularsicherheit, d.h. den Schutz vor Falscheingaben, etc. bitte erst einmal außen vor lassen. Darum kümmere ich mich, wenn hier alles läuft ;)
Vielen Dank!
|