Text aus Eingabemaske übernehmen nach Prozeduraufruf über Call

12/11/2009 - 09:20 von Manste | Report spam
Hallo,

ich habe mal wieder ein Problem. Ich habe eine Eingabemaske erstellt
und den Button OK folgendermaßen belegt:

Sub Cmd_OK_Ansprechpartner_Click()

' ... Hier sind verschiedene Möglichkeiten vorgegeben

If ...

Else
If ...

Else

' Gehe zur Textmarke Ansprechpartner, Pos1, markiere bis Ende, lösche
den dahinterstehenden Text,

Selection.GoTo What:=wdGoToBookmark, Name:="TM_Ansprechpartner"
Selection.Find.ClearFormatting
Selection.HomeKey Unit:=wdLine
Selection.EndKey Unit:=wdLine, Extend:=wdExtend
Selection.Delete Unit:=wdCharacter, Count:=1

'füge den Text aus der Eingabemaske bei der Textmarke Ansprechpartner
ein

ActiveDocument.Bookmarks("TM_Ansprechpartner").Range.Text Frm_Abfrage_Ansprechpartner.Txt_Ansprechpartner

End Sub

Das funktioniert super. Jetzt habe ich das ganze geàndert und den
Button OK mit verschiedenen Aufrufen belegt:

Sub Cmd_OK_Ansprechpartner_Click()

' ... Hier sind verschiedene Möglichkeiten vorgegeben (die auch alle
funktionieren)

If ...

Else
If ...

Else
'Schließe diese Eingabemaske
Unload Me
'Rufe die Prozedur Ansprechpartner_àndern auf
Call Mod_Abfrage_Ansprechpartner.Ansprechpartner_àndern
End If
End If
End Sub

Über diesen Aufruf wird jetzt genau die gleiche Prozedur aufgerufen,
wie vorher auch:

Sub Ansprechpartner_àndern()

' Gehe zur Textmarke Ansprechpartner, Pos1, markiere bis Ende, lösche
den dahinterstehenden Text,

Selection.GoTo What:=wdGoToBookmark, Name:="TM_Ansprechpartner"
Selection.Find.ClearFormatting
Selection.HomeKey Unit:=wdLine
Selection.EndKey Unit:=wdLine, Extend:=wdExtend
Selection.Delete Unit:=wdCharacter, Count:=1

So, und bis hierher funktioniert das alles. Der Text wird gelöscht.
Die Textmarke steht danach auch noch im Tabellenfeld, aber der Text
(s. u.) wird nicht eingefügt. Obwohl es vor der Übergabe funktioniert
hat.

'füge den Text aus der Eingabemaske bei der Textmarke Ansprechpartner
ein

ActiveDocument.Bookmarks("TM_Ansprechpartner").Range.Text Frm_Abfrage_Ansprechpartner.Txt_Ansprechpartner

Kann mir jemand sagen, warum das so nicht funktioniert.

Bei einer anderen UserForm, die ebenfalls nur Text an das Dokument
übergeben soll, funktioniert das ganze auch nach dem Aufruf über Call.

Ich bin leider Anfànger.

Gruß
Manste
 

Lesen sie die antworten

#1 Thomas Gahler
12/11/2009 - 09:57 | Warnen spam
Hallo Manste

Ich bin leider Anfànger.


Das macht nichts. Und du lieferst deinen relvanten Code also alles ok.


'Schließe diese Eingabemaske
Unload Me


Mit dieser Anweisung entlàdst du deine UserForm. Sie ist somit nicht mehr im
Arbeitsspeicher.

Du musst entweder deine Werte in andere Variablen zwischenspeichern oder
kannst deine UserForm nur verbergen (me.hide), dann kannst du sie jederzeit
wieder nutzen.

Mit deinem spàteren Zugriff auf die UserForm wird diese wieder neu
initialisiert und darum kiommt kein Text, weil dein Feld leer ist.




Thomas Gahler
Co-Autor von »Microsoft Word-Programmierung.
Das Handbuch« (MS Press)


- Windows XP (SP3), Office XP (SP3)

Ähnliche fragen