キーワットイベントキーワード検索に関するスペースを受け入れない
こんにちは、
フォーム上のキーワード検索を使用していますが、単語を入力してスペースバーを持つスペースを追加しようとすると、私のカーソルは単語の最後に戻ります.スペースを受け入れるようにコードを修正し、キーワード検索で別の単語を入力するにはどうすればよいですか?
私はVBAにとって新しいです.以下のコードは、オンラインで見つけたリソースから取得されました.あなたの助けは大いに感謝されます! :)
プライベートサブTXTSEARCH_KEYUP(整数としてのkeyCode、整数としてシフト)
Error Goto ErrHandler
Dim FilterText文字列
"ユーザー入力に基づいてフィルタを適用または更新する.
len(txtsearch.text)>0の場合
filterText= txtsearch.text
me.form.filter= "[SearchQ]![ContractorClientName] "*"&filtertext&"*"や[searchq]![ProjectName]が "*"&filtertext&"*""
me.filteron= true
"更新後の検索ボックスにフィルタテキストを保持します.
txtsearch.text= filterText
txtsearch.selstart= len(txtsearch.text)
txtsearch.selstart= len(置換(txtsearch.text、 "、".")
else
"フィルタを削除します.
me.filter= ""
me.filteron= false
TXTSearch.SetFocus
の場合は終わりますSUB
を終了しますerrandler:
msgbox err.number&"-"&err.description、vbokonly、 "エラー..."
終了SUB
返信リスト(回答:11)
私はキーアップが間違ったイベントだと思います.コードをThetStSearch.Changeイベントに移動します.
応答9# ->にスキップ10 #TomvanSha!それは面白い.再帰的手順
自分で掘り下げたい場合は、手順の上部にブレークポイントを設定してアプリを実行してください.あなたのブレークポイントが何度も何度も呼ばれます.なぜですか?
応答10# ->にスキップ7 #Julieta私はアポストロフィなしで投稿された行の1つに気づいたが、私がそれを削除したコードを実行したとき.トラブルシューティングVBAが問題ないことではありません:(
txtsearch.selstart= len(txtsearch.text)-これは私が削除された行です.
txtsearch.selstart= len(置換(txtsearch.text、 "、".")
応答7# ->にスキップ6 #TomvanSそれを自分でテストせずに、私はこの行がカルプリットであると思うでしょう:
txtsearch.text= filterText
テキストプロパティを設定し、それは変更イベントをトリガーし、そしてやはり...
応答6# ->にスキップ5 #Julieta私がそのコード行を削除した後、それは私にエラーを与えませんが、それでも私にスペースを入力させません.私がするとすぐに、カーソルは単語の最後に戻ります:(
応答5# ->にスキップ4 #Imbこんにちはジュリエタ、
スペースを入力することができますが、コントロールを離れると、後のスペースがAfficeUpdateイベントで削除されます.ユーザーには便利です.
あなたができることは、あなたのText434コントロールの値にスペースを追加するコマンドボタン "add_space"を追加することです(どうぞ、それに機能名を付けてください).コントロールが「コード別」に変更された場合、AfterUpdateイベントは発生しません.
IMB
応答4# ->にスキップ3 #julietaこんにちはLMB、
私は他の基準検索のための検索ボタンがすでに検索ボタンを持っているので、私は本当にコマンドボタンの使用を避けようとしていました:(
このコントロールは、コンボボックスがどのように機能するかと同様に機能するクイック検索になることを望みました.入力すると、オプションのリストが狭くなります.私は別の検索ボックスからコードを持っていましたが、この検索ボックスはリストボックスでレコードを探していました.私はまた、keyPressの上にそのコードをコピーしようとしました:/おそらく私は別のコード行を組み込む必要がありますが、私はただわからない:(
これはキープレスコードです.
プライベートサブTXTSEARCH_KEYPRESS(整数としてのKEYASCII)
'ユーザーがスペースバーを押しているかどうかを識別するために必要です
'入力を無視したい場合は
エラー時に10 ERR_HANDLE
20 keyascii= 32の場合
30 BLNSPACE= true
40 Else
50 BLNSpace= False
60
の場合は終わります70 SUB
を終了しますerr_handle:
80ケースERR.NUMBER
を選択しますケース
90 msgbox "予期しないエラーが発生しました:"&vbcrlf&err.description&_
vbcrlf&"error"&err.number&"("&erl&")"
100エンド選択
終了SUB
応答3# ->にスキップ2 #Imbこんにちはジュリエタ、
このコードは、スペースが押されたときにBLNSPACE= TRUEです.
私は次にBLNSpaceが何をするのかわかりません.スペースを無視したい場合は、(BLNSPACE= TRUE以外の)KEYASCIIが0に設定されます. しかし、Blnspaceは後でそれをします.
これらの5行をスキップするとどうなりますか?
IMB
応答2# ->にスキップ1 #julietaだから私はスペースが働いていたリストボックスに価値を探していたフォームの1つに戻りました.それをより徹底的に分析した後、私は私がOn Key Pressに関連するコードを逃したことに気づいた!以下のコードは今働いています! :)太字の行は、私が逃した行/修正
ブールとしてのプライベートBLNSpace
プライベートサブTxtSearch_Change()
Error Goto ErrHandler
Dim FilterText文字列
'ユーザー入力に基づいてフィルタを適用または更新する.
blnspace= false
Me.Refresh 'テキストボックスが変更されていることを確認するには、実際にを使用できるようにしてください.
len(txtsearch.text)>0の場合
filterText= txtsearch.text
me.form.filter= "[SearchQ]![ContractorClientName] '*"&filtertext&"*'や[searchq]![ProjectName]が '*"&filtertext&"*'"
me.filteron= true
'更新後の検索ボックスにフィルタテキストを保持します.
txtsearch.setfocus
txtsearch.selstart= len(txtsearch.text)+ 1
else
'フィルタ
を削除しますme.filter= ""
me.filteron= false
TXTSearch.SetFocus
の場合は終わりますの場合は終わります
SUB
を終了しますerrandler:
msgbox err.number&"-"&err.description、vbokonly、 "エラー..."
終了SUB
プライベートサブTXTSearch_gotFocus()
'コントロールがフォーカスになるとプロンプトを削除するために使用されます
10 ON ERROR RESUME NEXT
20 if me.txtsearch.value= "(検索入力)"
30 ME.TXTSearch.Value= "" "" "" "
40
の場合は終わります終了SUB
プライベートサブTXTSEARCH_KEYPRESS(整数としてのKEYASCII)
'ユーザーがスペースバーを押しているかどうかを識別するために必要です
'入力を無視したい場合は
エラー時に10 ERR_HANDLE
20 keyascii= 32の場合
30 BLNSPACE= true
40 Else
50 BLNSpace= False
60
の場合は終わります70 SUB
を終了しますerr_handle:
80ケースERR.NUMBER
を選択しますケース
90 msgbox "予期しないエラーが発生しました:"&vbcrlf&err.description&_
vbcrlf&"error"&err.number&"("&erl&")"
100エンド選択
終了SUB