- ベストアンサー
Accessフォームのテキストボックス内改行無効の方法
Accessフォームのテキストボックス内改行無効の方法 お世話になっております。 Access 2002 ですが、フォーム上に配置したテキストボックスは、 「Ctrl+Enter」で改行できますが、 これを無効にしたい、つまり、テキストボックス内で改行させたくない場合は どうしたらよろしいのでしょうか? よろしくお願いいたします。
- みんなの回答 (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 ・・・以上です。
お礼
早速、ご丁寧にご回答いただき、 ありがとうございました。 非常にわかりやすかったです。 おかげさまで、期待通りの動きが実現できました。