Supportnet / Forum / Datenbanken
wie deaktiviere ich im Textfeld eines Formulars die Tasteneingabe Alt + Return?
Frage
Zeilenumbruch in Access geht nur über Strg + Return (Enter), daher möchte ich obige Kombination deaktivieren, das hierbei das Eigenschaftsfenster aufgeht. Evtl. wurde schon mal eine Lösung gezeigt, leider fand ich nichts.
Antwort 1 von Marie
zum Beispiel bei dem Ereignis VorAktualisieren des Formulars:
If instr(Me!DeinFeld, vbcr) > 0 OR
instr(Me!DeinFeld, vblf) > 0 then
MsgBox "Zeilenumbrüche sind nicht erlaubt."
Cancel = True
Me!DeinFeld.SetFocus
End If
Gruß Marie
If instr(Me!DeinFeld, vbcr) > 0 OR
instr(Me!DeinFeld, vblf) > 0 then
MsgBox "Zeilenumbrüche sind nicht erlaubt."
Cancel = True
Me!DeinFeld.SetFocus
End If
Gruß Marie
Antwort 2 von lemmy49
Hallo Marie, vielen Dank für Antwort.
Ist aber nicht das was ich meinte.
Im Feld sollte schon ein Zeilenumbruch erlaubt sein, aber die Tastenkombination Alt + Return erzeugt das Popup der Feldeigenschaft.
Ich will nur Strg + Return (Enter) erlauben.
Ansonsten soll keine Aktion erfolgen bzw. zum Testen eine Meldung.
Was ich fand ist:
If (Shift And acAltMask) > 0 Then
Msgbox "Meldung"
Aber mir fehlt noch zusätzlich Return/Enter.
Evtl. gibt es noch andere Möglichkeiten.
Danke und Gruß Dieter
Ist aber nicht das was ich meinte.
Im Feld sollte schon ein Zeilenumbruch erlaubt sein, aber die Tastenkombination Alt + Return erzeugt das Popup der Feldeigenschaft.
Ich will nur Strg + Return (Enter) erlauben.
Ansonsten soll keine Aktion erfolgen bzw. zum Testen eine Meldung.
Was ich fand ist:
If (Shift And acAltMask) > 0 Then
Msgbox "Meldung"
Aber mir fehlt noch zusätzlich Return/Enter.
Evtl. gibt es noch andere Möglichkeiten.
Danke und Gruß Dieter
Antwort 3 von lorf55
Hallo Dieter,
um für ein textfeld Alt+ENTER abzufangen, geht:
Um für das ganze Formular Alt+ENTER abzufangen, geht:
Allerdings wird so das Ereignis nicht aus der Messagequeue (auch nicht durch DoCmd.CancelEvent) bzw. erst durch die Msgbox entfernt. Deshalb ersetzt du die MsgBox durch:
Ich hoffe, du kannst damit was anfangen.
Gruß
lorf
um für ein textfeld Alt+ENTER abzufangen, geht:
Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)
Dim intAltGedr As Integer
' Bit-Masken einsetzen, um die gedrückte Taste zu ermitteln.
intAltGedr = (Shift And acAltMask) > 0
' Per Meldung dem Benutzer mitteilen, welche Taste gedrückt wurde.
If intAltGedr And (KeyCode = vbKeyReturn) Then MsgBox "Sie haben ALT+Return gedrückt."
End SubUm für das ganze Formular Alt+ENTER abzufangen, geht:
Private Sub Form_Load()
Me.KeyPreview = True
End Sub
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
Dim intAltGedr As Integer
' Bit-Masken einsetzen, um die gedrückte Taste zu ermitteln.
intAltGedr = (Shift And acAltMask) > 0
' Per Meldung dem Benutzer mitteilen, welche Taste gedrückt wurde.
If intAltGedr And (KeyCode = vbKeyReturn) Then MsgBox "Sie haben ALT+Return gedrückt."
End SubWichtig ist, dass über Form_Load die Tastenvorschau für das Formular eingeschaltet wird .Allerdings wird so das Ereignis nicht aus der Messagequeue (auch nicht durch DoCmd.CancelEvent) bzw. erst durch die Msgbox entfernt. Deshalb ersetzt du die MsgBox durch:
KeyCode = 0
Shift = 0Das verhindert, dass der Tastencode an andere Ereignisprozeduren weiter gegeben wird, so dass Form_KeyDown denn so aussieht: Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
Dim intAltGedr As Integer
' Bit-Masken einsetzen, um die gedrückte Taste zu ermitteln.
intAltGedr = (Shift And acAltMask) > 0
If intAltGedr And (KeyCode = vbKeyReturn) Then
' ALT+Return gedrückt
KeyCode = 0
Shift = 0
End If
End SubIch hoffe, du kannst damit was anfangen.
Gruß
lorf
Antwort 4 von lemmy49
Hallo Lorf, supiii !
Genau so muß es gehen.
Hast mir sehr geholfen, Danke.
Habe im Internet nach Lösungen gesucht und nichts gefunden, auch mein Buch über VBA Lösungen gab nichts her.
Es gibt halt doch Spezialisten; da bin ich noch ein kleines Lichtchen.
Grüße Dieter
Genau so muß es gehen.
Hast mir sehr geholfen, Danke.
Habe im Internet nach Lösungen gesucht und nichts gefunden, auch mein Buch über VBA Lösungen gab nichts her.
Es gibt halt doch Spezialisten; da bin ich noch ein kleines Lichtchen.
Grüße Dieter
Antwort 5 von lorf55
Hallo Dieter,
Danke gleichfalls, war mir eine Freude.
Ob du es mir glaubst oder nicht, es steht alles in der Hilfe drin. Allerdings musste man es sich noch zusammenreimen. Das wird einem allerdings nicht unbedingt leicht gemacht. Vielleicht sollte ich mich Reimer, Dichter oder Klempner nennen.
Schön, wenn es funktioniert. Denn können wir ja einen Haken dran machen (Lsg) und uns freuen.
Denn bis die Tage
Gruß
lorf
Danke gleichfalls, war mir eine Freude.
Ob du es mir glaubst oder nicht, es steht alles in der Hilfe drin. Allerdings musste man es sich noch zusammenreimen. Das wird einem allerdings nicht unbedingt leicht gemacht. Vielleicht sollte ich mich Reimer, Dichter oder Klempner nennen.
Schön, wenn es funktioniert. Denn können wir ja einen Haken dran machen (Lsg) und uns freuen.
Denn bis die Tage
Gruß
lorf

