Wenn-Dann in Word Formular

Hallo,
also wie im Betreff schon erwähnt brauche ich Hilfe für ein Formular.
Ich habe ein Formular erstellt, in dem man mehrere zur Auswahl stehende Kästchen ankreuzen kann. Das letzte Kästchen heißt _____________, und soll, falls es nicht angekreuzt ist, auch weiter als Strich angezeigt werden. Falls man es aber ankreuzt, soll man Anstelle der Linie etwas eintragen können und der Strich soll verschwinden. Also quasi eine Wenn-Dann-Anweisung.

Momentan habe ich das Problem so gelöst, indem ich das Formularfeld, indem man den Namen eingeben soll, mit einen Vorgabetext belegt habe, nämlich den Unterstrichen. Das Problem ist aber dabei, wenn ich etwas eingebe, dann bleiben die übrigen Striche stehen und ich muss diese von Hand entfernen, sehr nervig.

Kann mir bitte jemand weiterhelfen?
Danke bereits im vorraus für Eure Hilfe

Gruß Christoph

Hallo,

ein etwas ungewöhnlicher Vorschlag: besorge Dir Winword in der Version 6.0. Dort kann man Makros noch in Deutsch erstellen, ist ähnlich dem normalen Basic und leichter zu erlernen.

Die so erstellten Makros werden von einer höheren Word-Version umgewandelt. Aber zum testen reicht Word 6.0.

Leider ist es zu lange her, dass ich mit den Makros gearbeitet habe. Die Lösung deines Problems sehe ich so:

Abfragen, ob angekreuzt

falls ja, zu einer Textmarke springen (vorher natürlich definieren, auch beachten, ob der Dokumentenschutz aufgehoben werden muss), dann Text oder String einfügen.

Unbedingt auf den Schutz des Dokumentes achten, nach Aufhebung des Dukuments dieses nicht wieder schützen, da dann die Eingaben in allen Formularfeldern zurückgesetzt werden. Im alten Word gab es die Funktion „Dokumentschützen“ mit der 1 oder 2 dahinter. 1 = Werte in den Formularfeldern werden gelöscht, 2 = Werte werden nicht gelöscht.

Das ist aber nur aus der Erinnerung heraus, keine Garantie.

Gruss

Andreas

ÖÖhhhm, ne das ist dann doch ein bisschen viel Mühe. Mit anderes Word installieren ist so ne Sache, da ich das an der Arbeit brauche und sich unsere IT-Abteilung da ein wenig eng macht mit Software und so.
Aber trotzdem Danke, vielleicht kann ja hier jemand der Makro-versiert ist auch ein passendes schreiben? (Nur wenn ihm langweilig ist)
Ansonsten muss man halt Striche löschen, ist ja auch kein Beinbruch.

Hallo,
also wie im Betreff schon erwähnt brauche ich Hilfe für ein
Formular.
Ich habe ein Formular erstellt, in dem man mehrere zur Auswahl
stehende Kästchen ankreuzen kann. Das letzte Kästchen heißt
_____________, und soll, falls es nicht angekreuzt ist, auch
weiter als Strich angezeigt werden. Falls man es aber
ankreuzt, soll man Anstelle der Linie etwas eintragen können
und der Strich soll verschwinden. Also quasi eine
Wenn-Dann-Anweisung.

Hallo Christoph,

ich nehme an, das du ein Word-Formular meinst und kein VBA-Userform.
Ich hab da jetzt etwas herumprobiert. Ich verwende WORD97; sollte aber kein Problem bei neueren Versionen sein. Mit dem Ergebnis bin ich nicht 100%-ig zufrieden, aber es ist akzeptabel. Die nachfolgenden Makros führen Aktionen aus, wenn das Kontrollkästchen per Maus angeklickt oder per Tasten angesteuert wird und wenn das Eingabefeld verlassen wird. Unter Option muß man für die Formularfelder die Makros bei Eintritt bzw. Verlassen des Feldes einstellen. Die Namen der Formularfelder muß Du natürlich an deine Verhältnisse anpassen.
„Text1“ und „Checkbox1“ sind die von mir verwendeten Namen der Formularfelder im Beispiel.

Sub Textbox1\_verlassen()
' Aktionen, wenn das Textfeld verlassen wird
 If ActiveDocument.FormFields.Item("Text1").Result = "" Or \_
 ActiveDocument.FormFields.Item("Text1").Result = \_
 ActiveDocument.FormFields.Item("Text1").TextInput.Default Then
 ActiveDocument.FormFields.Item("Checkbox1").Result = False
 ActiveDocument.FormFields.Item("Text1").Result = \_
 ActiveDocument.FormFields.Item("Text1").TextInput.Default
 End If
End Sub

Sub Checkbox1Klick()
' Aktionen, wenn das Kontrollkästchen angeklickt wird
 If ActiveDocument.FormFields.Item("Checkbox1").Result = True Then
 'Kontrollkästchen ist aktiviert
 If ActiveDocument.FormFields.Item("Text1").Result = \_
 ActiveDocument.FormFields.Item("Text1").TextInput.Default Then
 ActiveDocument.FormFields.Item("Text1").TextInput.Clear
 End If
 Selection.GoTo What:=wdGoToBookmark, Name:="Text1"
 Else
 'Kontrollkästchen ist deaktiviert
 ActiveDocument.FormFields.Item("Text1").Result = \_
 ActiveDocument.FormFields.Item("Text1").TextInput.Default
 End If
End Sub

Bei Mausbedienung funktioniert alles optimal, Bei Bedienung mit der Tastatur muß man ggf. den Inhalt des Eingabefeldes löschen, wenn man die Markierung wieder aufheben möchte.

Als kleine Hilfe schicke ich Dir eine Beispiel-Datei mit weiteren Erläuterungen.

Gruß
Franz

Super, vielen Dank. Genau das ist es was ich haben wollte. Werde morgen gleich versuchen, ob ich es für mein Formular einbauen kann. Aber so, bei einem Probe-Text, hat es genauso funktioniert, wie es sollte.

Noch mal vielen Dank Franz, mein Makro-König…