こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

Accessフォームのテキストボックス内改行無効の方法

Accessフォームのテキストボックス内改行無効の方法

お世話になっております。

Access 2002 ですが、フォーム上に配置したテキストボックスは、
「Ctrl+Enter」で改行できますが、
これを無効にしたい、つまり、テキストボックス内で改行させたくない場合は
どうしたらよろしいのでしょうか?

よろしくお願いいたします。

投稿日時 - 2009-12-21 14:30:56

QNo.5537840

困ってます

質問者が選んだベストアンサー

> 「Ctrl+Enter」で改行できますが、これを無効にしたい

「Ctrl+Enter」をキークリック時イベントで拾い、無効化してやるのがよいかと
思います。
(特定のテキストボックスに限ってであればそのテキストボックスの同イベントに、
 フォーム全体であればフォームのプロパティシートで、『イベント』タブの
 『キーボードイベント取得』を「はい」にした上で同イベントに、下記のコード
 を記述)

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)    'フォーム時
'Private Sub テキスト0_KeyDown(KeyCode As Integer, Shift As Integer)  'テキストボックス

  '「Ctrl+Enter」の同時押し時
  If KeyCode = vbKeyReturn And Shift = acCtrlMask Then
    MsgBox "改行は使用禁止です。", vbExclamation, "確認"
    '入力したキーを無効化
    KeyCode = 0
    Shift = 0
  End If

End Sub


なお、メモ帳などで入力した文をCopy&Pasteされた場合などには、この方法
では対処できませんので、これについてはテキストボックスの更新後イベントで
対応します。
(クリップボードの内容を見て、改行があったら削除、という方法もあるかとは
 思いますが、私はクリップボード周りは手を出したことがないので・・・(汗))

※上記の「Ctrl+Enter」対応はリアルタイムですが、こちらはテキストボックス
  の更新が確定したときの発生となります。
  使用頻度の高低からすれば、これでもよいかと思っていますが、逆に全て
  の場合で「確定時に一括」でよいなら、キークリック時の対応は省略して、
  こちらのみでもOKです。

Private Sub テキスト0_AfterUpdate()

  'Accessでの改行コードがあった場合は削除(=空文字に置換)
  If InStr(1, テキスト0, vbCrLf) Then
    MsgBox "使用禁止のため、改行は削除されます。", vbExclamation, "確認",
    テキスト0 = Replace(テキスト0, vbCrLf, "")
  End If

End Sub


・・・以上です。

投稿日時 - 2009-12-21 23:30:48

お礼

早速、ご丁寧にご回答いただき、
ありがとうございました。

非常にわかりやすかったです。
おかげさまで、期待通りの動きが実現できました。

投稿日時 - 2009-12-22 10:43:10

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問