Discussion:
statt ENTER nur TAB zulassen
(zu alt für eine Antwort)
Susann Markward
2008-07-15 14:28:04 UTC
Permalink
Hallo,

x-post -> m.p.d.v, m.p.d.w.v mit fup2 -> m.p.d.w.v
ich arbeite mit Word 2003 SP3 und habe einen Fragebogen mit
Textformularfeldern erstellt. In diesen Textformularfeldern möchte ich
die ENTER-Taste unterbinden, so dass der User nur mit der TAB-Taste in
die nächste Zeile springen kann. Damit möchte ich vermeiden, dass das
gesamte Sheet durcheinander gerät. Prima wäre, wenn der User dann
durch eine Msg-Box darauf aufmerksam gemacht wird, dass er mit der TAB-
Taste weiterspringen möchte.
Leider drängt die Zeit ein wenig und so ich bin für jeden Tipp äußerst
dankbar.
Freue mich auf Eure Ideen. Vielen Dank im Voraus.
Entschuldige bitte meine Antwort. Damit kann es nicht funktionieren, da
Du VBA meinst. Das hatte ich leider übersehen.

Deswegen frage bitte in der NG <microsoft.public.de.word.vba> nach. Ich
habe Dein Problem schon dorthin gepostet und dahin ein FollowUp gesetzt.
Martina Möhrke
2008-07-16 07:39:55 UTC
Permalink
Post by Susann Markward
Hallo,
x-post -> m.p.d.v, m.p.d.w.v mit fup2 -> m.p.d.w.v
ich arbeite mit Word 2003 SP3 und habe einen Fragebogen mit
Textformularfeldern erstellt. In diesen Textformularfeldern möchte ich
die ENTER-Taste unterbinden, so dass der User nur mit der TAB-Taste in
die nächste Zeile springen kann. Damit möchte ich vermeiden, dass das
gesamte Sheet durcheinander gerät. Prima wäre, wenn der User dann
durch eine Msg-Box darauf aufmerksam gemacht wird, dass er mit der TAB-
Taste weiterspringen möchte.
Leider drängt die Zeit ein wenig und so ich bin für jeden Tipp äußerst
dankbar.
Freue mich auf Eure Ideen. Vielen Dank im Voraus.
Entschuldige bitte meine Antwort. Damit kann es nicht funktionieren, da
Du VBA meinst. Das hatte ich leider übersehen.
Deswegen frage bitte in der NG <microsoft.public.de.word.vba> nach. Ich
habe Dein Problem schon dorthin gepostet und dahin ein FollowUp gesetzt.
Hallo Thorsten,
hallo Susann,

Thorsten vielen Dank für deine Information.
Susann vielen Dank für Deine Unterstützung, meine Frage gleich an die
andere Newsgroup zu posten.

Ich werde dort die Newsgroup befragen.

Recht herzlichen Dank und einen schönen Tag!

Gruß
Martina
Hartwig Constien
2008-07-17 13:18:00 UTC
Permalink
Hallo Martina,
ich arbeite mit Word 2003 SP3 und habe einen Fragebogen mit
Textformularfeldern erstellt. In diesen Textformularfeldern möchte ich
die ENTER-Taste unterbinden, so dass der User nur mit der TAB-Taste in
die nächste Zeile springen kann. Damit möchte ich vermeiden, dass das
gesamte Sheet durcheinander gerät. Prima wäre, wenn der User dann
durch eine Msg-Box darauf aufmerksam gemacht wird, dass er mit der TAB-
Taste weiterspringen möchte.
Tastaturüberwachung einer UserForm mag ja noch angehen, aber auf der
Dokumentenebene mit Textformularfeldern würde ich das nicht machen. Wenn Du
ein gemeinsames abschließendes Ereignis hast, könntest Du alle Formularfelder
durchlaufen und alle abschließenden Enter aus den Feldern löschen, bevor die
weitere Verarbeitung passiert.

Da Du aber die Textformularfelder offensichtlich in einer Tabelle platziert
hast, kannst Du für jede Tabellenzeile mit Formularfeldern die Zeilehöhe auf
"genau" festlegen. Dann können Deine User beliebig viele Enters eingeben,
ohne dass Dein mühsam erstellter Formularaufbau zerstört wird.

Hang loose, Hartwig
Thomas Gahler
2008-07-17 14:01:47 UTC
Permalink
Hallo Martina
In diesen Textformularfeldern möchte ich
die ENTER-Taste unterbinden, so dass der User nur mit der TAB-Taste in
die nächste Zeile springen kann. Damit möchte ich vermeiden, dass das
gesamte Sheet durcheinander gerät. [...]
Das Unterbinden der Enter-Taste ist nicht ganz einfach. Wir können jedoch
beim Verlassen der Formularfelder, oder vor dem Drucken oder beim Speichern
usw. prüfen ob die Formularfelder die Spielregeln einhalten.

Hier ein Code-Schnippsel, den du bei der Prüfung (beim verlassen) eines
jeden Formularfeldes einbauen kannst.




Sub FormFieldPrüfung()
Dim ffld As Word.FormField

Set ffld = Selection.Paragraphs(1).Range.FormFields(1)

If Not InStr(1, ffld.Result, vbCr, vbTextCompare) = 0 Then
MsgBox "Enter ist drin"
procZeichenErsetzen ffld, vbCr
ElseIf Not InStr(1, ffld.Result, vbVerticalTab, vbTextCompare) = 0 Then
MsgBox "Zeilenschlatung ist drin"
procZeichenErsetzen ffld, vbVerticalTab
Else
End If

'zur Info
Application.Caption = ffld.Name
End Sub

Private Sub procZeichenErsetzen( _
ByVal ffld As Word.FormField, _
ByVal strZeichenEntfernen As String)

Dim strText As String
Dim intPos As Integer

strText = ffld.Result

intPos = InStr(1, strText, strZeichenEntfernen, vbBinaryCompare)
While Not intPos = 0
Mid$(strText, intPos, 1) = " "
intPos = InStr(1, strText, strZeichenEntfernen, vbBinaryCompare)
Wend

ffld.Result = strText
End Sub
--
Thomas Gahler
MVP für WordVBA
Co-Autor von »Microsoft Word-Programmierung.
Das Handbuch« (MS Press)


- Windows XP (SP2), Office XP (SP3)
Loading...