アプリ版:「スタンプのみでお礼する」機能のリリースについて

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

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

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

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

A 回答 (1件)

> 「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


・・・以上です。
    • good
    • 0
この回答へのお礼

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

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

お礼日時:2009/12/22 10:43

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

関連するカテゴリからQ&Aを探す


このQ&Aを見た人がよく見るQ&A