• ベストアンサー

テキストボックスのエンターキー無効

VB6.0について質問いたします。 テキストボックスの入力の際に改行を強制的にできないように制御したいのですが次のプログラムでは上手くいきませんでした。 Private Sub Text_KeyDown(KeyCode As Integer, Shift As Integer) If vbcode = vbKeyReturn Then Exit Sub End If End Sub エンターキーを押したとき何も実行しないようにするにはどうしたらいいですか? テキストボックスはスクロールバーを設置してMultiLine プロパティをtrueに設定しています。

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

  • ベストアンサー
  • Ulrika
  • ベストアンサー率45% (59/129)
回答No.1

Private Sub Text1_KeyPress(KeyAscii As Integer) If KeyAscii = vbKeyReturn Then KeyAscii = 0 End If End Sub にすれば良いのでは。 ヘルプにはKeyAscii に0を設定することでキー操作が取り消されるとなってます。

その他の回答 (1)

回答No.2

go_osarukuさんの書かれたプログラムですと KeyDownイベントでenterが押下されたらKeyDownイベント処理を抜けるというプログラムなのでenterが無効になっていませんのでNo1さんの言うようにkeyAsciiを0にしてキーが無効化すれば改行されなくなりますよ^^

関連するQ&A

  • MSForms.ReturnInteger

    Excel VBAで 違うSubから textbox_keypress をコールしたいのですが、 vbKeyReturnを受け渡せません。 ****************************************** Private Sub StartButton_Click() Dim KeyCode As MSForms.ReturnInteger If EngTypeStartButton.Caption = "" Then KeyCode.Value = vbKeyReturn <---ここでエラーになる。 Call TextBox_KeyDown(KeyCode, 0) End If End Sub ****************************************** 『実行エラー91 オブジェクト変数またはWithブロック変数が設定されていません』 と表示されます。 vbKeyReturnの代わりに13としても結果は同じです。 受け側のSubは以下のような始まりです。 Private Sub TextBox_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer) このSubは正常に動作しています。 どなたか私の間違いを教えていただけないでしょうか? よろしくお願いいたします。

  • テキストボックスのキーイベントについて

    VS2005を使用して勉強中の初心者です。 今、勉強を兼ねて実験的に作成しているアプリにおいて 「TextBox1にフォーカスがある時 エンターキーを押すことでメッセージボックス"TEST"を表示させる」 ということをさせようと考えています。 以下のようなイベントプロシージャによって、 一応目的の動きをさせることはできましたが この時、エンターキー押下による改行を入力させずに メッセージボックス表示のみを実行させるには どのように書き直すべきなのでしょうか。 よろしくお願い致します。 Private Sub TextBox1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) If e.KeyCode = Keys.Enter Then MsgBox("TEST") End If End Sub

  • VBA エンターキーでイベントに入りたい。

    テキストボックスにデータ入力後エンターキーの押下でイベントに入りたいのですが、下記のコーディングで[通過]メッセージが表示されません。英数字は通過しますが、エンターキーは動作停止します。 これと全く同じコーディングでVB6は正しく動きます。(ただし、Pvate Sub text1_KeyPress(KeyAscii As Integer)に変更してます。) <コーディング> Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) Msgbox "通過" If KeyAscii = vbKeyReturn Then KeyAscii = 0 End If End Sub これが出来ると、そのつどキーボードから手を離さずに済むので作業効率がグンとあがります。どうかよろしくご教示ください。Excel2003SP3

  • テキストボックス上でのショートカットメニューを無効にしたい

    テキストボックス上で、右クリックをすると、クリップ ボードにある文字列をテキストボックスにペーストする ということをしたいのですが、右クリックを押すと ショートカットメニューが開いてしまいます。 (下記コード参照)ショートカットメニューを無効に する方法はあるでしょうか? Private Sub Text1_MouseDown(Index As _ Integer,Button As Integer,Shift As _ Integer, X As Single, Y As Single) With Text1 If Button = vbRightButton Then If Clipboard.GetText <> "" Then .SelText = Clipboard.GetText End If End If End With End Sub VB6を使用してます。

  • Accessでのテキストボックスのv記載方法

    Accessでのvbaを使用したコードの書き方について教えて欲しいです。 vbaを使用したますたメンテナンス(データ管理)のコードをAccessで組んでいるのですがで組んでいるのですがどうも上手くいかないところが多いです。 1. コードという名前のテキストボックス(プロパティ→すべて→名前でつけた名前を使用しています)の入力チェックが上手くいきません。ここでは自作関数を呼び出してif文で空白かどうかチェックしてるのですが コード(テキストボックス)=Nullとなってしまい、""のチェックに引っかかってくれません。どうしたら空白=""になってくれるのでしょうか。 デバッグをしてみたらテキストボックスは常にNull(Variant型)なってるのではなくたまに""(String型)になったりするので何が原因で型が変わってるのかも謎です テキストボックスだから""で空文字判定できると思うのですが… 書いたのは以下のコードです。 わかる方よろしくお願いします。 Public Function EmptyCheck(Koumoku As String) As Boolean '引数で渡された項目が入力されているかチェック If Koumoku = ""Then Koumoku.SetFocus Exit Function EmptyCheck = Ture Else EmptyCheck = False End If End Function Private Sub コード_KeyDown(KeyCode As Integer, Shift As Integer) 'Enterキー押したときに処理を開始する If KeyCode = 13 Then If EmptyCheck(コード) = True Then MsgBox "TextBox &を入力してください。" End If

  • VB6.0 KeyDownイベントの対応

    VB6.0を使ってプログラム中ですが、下記の  Command10_KeyDown で、複合キー「 Ctrl + ↓」 だとイベント KeyDown を受信できるのですが、単純な キー「↓」だと、イベント KeyDown を受信でず、他のボタンにフォーカスが移ってしまいます。 Comman10_GotFocus に何か対応策を入れて、単純な キー「↓」のイベント KeyDown を受信する方法はないでしょうか? Private Sub Command10_KeyDown(KeyCode As Integer, Shift As Integer) If KeyCode = 40 Then execsub001() End If End Sub Private Sub Commnad10_Click() execsub001() End Sub Private Sub Comman10_GotFocus() 上記問題への対応策を此処に記述したい End If Private Sub execsub110() 内容は省略 End Sub

  • テキストボックスでMAX文字数を入れたらTABで飛びたい

    テキストボックスで、2バイト入力されたらTABで次のテキストボックス に移動すると言うイベントを4つのテキストボックスのKeyUpイベント に記述しました。 サンプルとして一つ書きます。 Private Sub Text1_KeyUp(KeyCode As Integer, Shift As Integer) If Len(Text1.Text) = 2 Then SendKeys "{TAB}" KeyCode = 0 End If End Sub 上記のソースでプログラムを実行し、Text1に2バイト入力されると、 次のテキストボックス(Text2)に移動します。 更にText2,Text3に、2バイト入力しますと、カーソルがText4に来ます。 ここで、マウスでText1にカーソルを持っていき、値を変更すると、 Text2に移動するはずが、Text4にカーソルが移動します。 なぜでしょうか?? くだらない質問ですが、よろしくお願いします。

  • エクセルBVAのフォーム式のKeyCode~の意味がわかりません

    エクセルBVAです Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer) If KeyCode = vbKeyDown Then KeyCode = 0 End If End Sub ヘルプをみると キーを押したとき、およびキーを離したときに続いて発生します。KeyDown イベントはキーを押すと発生し、KeyUp イベントはキーを離すと発生します。 キーってenterのことですかね? なら、 If KeyCode = vbKeyDown Then KeyCode = 0 End If で、KeyCodeを0ににするってどういうことでしょうか?

  • エクセル VBA タブストップに対する質問2

    下記の「エクセル VBA タブストップに対する質問」に書き込みした者ですが、一難去ってまた一難です。又、暗雲が漂ってきました。 条件は下記といっしょで テキストボックスが1~5まであり、テキストボックス2~4まではデータが入っています。 全てのTabStopはTrue、TabIndexは順に1~5が入っています。 テキストボックス1に何もデータを入れないで、Enterが押された場合、 テキストボックス1をアクティブにしたいのですが、下記で質問した回答で動かしても、きちんと動いてくれません。 どうかご指導よろしくお願いいたします。 Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer) If KeyCode = 13 Then 'ENTER If TextBox1.Value = "" Then TextBox1.SetFocus End If End If End Sub このコードでテキストボックス1に何も入れずにEnterを押すとテキストボックス2がアクティブになってしまいます。

  • VB6 TextBoxの先頭が自動改行されてしまう

    中を見ていただき、ありがとうございます。 Visual Basic 6.0 をWinXP SP3で使って、メモを作っています。 機能としては非常に単純で、書き込み用のテキストボックス(以下Text1とします)と記録用のテキストボックス(つまりLocked=Trueとして書き込めないようにしている:以下Text2とします)があって、(1)Text1にメモを書いてEnterを押せば、(2)その内容がText2に転写され、(3)Text1の内容は消える、というものです。 ところが、以下のプログラムによってこれを実装しようとしたところ、Text1からText2への転写はうまくいくものの、2回目以降はText1の1行目が自動的に改行された状態になってしまい、必ず2行目から文章を打たなくてはいけないようになってしまいます。 Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer) If KeyCode = 13 Then Text2.Text = Text2.Text & vbclrf & Text1.Text Text1.Text = "" End If End Sub 使用する上では特に問題無いのですが、見た目が少し悪いので、この1行目の「自動改行」をキャンセルする方法をご存知の方がいらっしゃいましたら、ご教授くださいますようお願い致します。