- ベストアンサー
AccessのエラーチェックでFキーcmdボタンから反映されない
- Accessの入力フォームでエラーチェックをかけていますが、Fキーcmdボタンからエラーが反映されません。
- エラー個所を修正した状態でも、Fキーcmdボタンの「更新」ボタンを押すとテキストボックスにエラーが出ます。
- Me.txtMsgが未入力の場合や郵便番号が10文字でない場合にエラーメッセージを表示し、フォーカスを設定します。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
cmdTxtF5クリック前にcmdTxtF5.SetFocus・・・一緒かな? 確認ですが、 F5キー若しくはcmdTxtF5(コマンドボタン名)を直接クリックすることによりcmdTxtF5keydown()を実行したいということですよね。 ということは、 cmdTxtF5クリック時のイベント↓ Private Sub cmdTxtF5_Click() cmdTxtF5keydown End Sub かつ、フォームの「キーボードイベント取得」→「はい」 そして、 Formのキークリック時のイベント↓ Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer) If KeyCode = vbKeyF5 Then Me.cmdTxtF5.SetFocus 'ここでFocusを移す cmdTxtF5keydown End If End Sub 必要最低限の以上のような設定でテストしてみましたが、当方ではうまく作動しました。(cmdTxtF5keydownはNo.3の回答のものを使用しました。) 再確認ですが、コマンドボタンの名前は「cmdTxtF5」で間違いないですよね。 ・・・あっ、一回目の更新は実行できたのだから間違いないか (^ ^;
その他の回答 (3)
- Watapo3
- ベストアンサー率76% (33/43)
>実行時エラー'cmdF5'にフォーカスを移動することはできません。 >*ラベルなど、フォーカスを取得できないコントロールです。 >*コントロールの"Visible/可視"プロパティが[No/いいえ]に設定されています。 >*コントロールの"Enabled/使用可能"プロパティが[No/いいえ]に設定されています。 >ちなみに上記指摘のプロパティは全て[Yes/はい]に設定してます。 うぅ~ん・・・ かなり自信ありませんが、SetFocusの前に Me.Repaint と、一行入れてみて下さい・・・ダメかな(; ;)
お礼
何度も何度もごめんなさい! やっぱり駄目みたいです。 実行時エラー'2110': コントロール'cmdF5'にフォーカスを移動することはできません。 *ラベルなど、フォーカスを取得できないコントロールです。 *コントロールの"Visible/可視"プロパティが[No/いいえ]に設定されています。 *コントロールの"Enabled/使用可能"プロパティが[No/いいえ]に設定されています。 ↑が出てしまいました。記述の仕方が悪いのでしょうか? cmdTxtF5はコマンドボタン(更新)です。 txtMsgはエラー内容を表示するテキストボックスです。 Private Sub cmdTxtF5keydown() Dim intKsn As Integer Dim lngID As Long Dim intEnd As Integer Dim errMoji As String Me.Repaint Me.cmdTxtF5.SetFocus ’エラーチェック '未入力チェック Me.txtMsg = "" If IsNull(Me.募集内容) Or Me.募集内容 = "" Then Me.txtMsg = "募集内容データが未入力です。" Me.募集内容.SetFocus Exit Sub End If '入力禁止文字チェック(全角空白)
- Watapo3
- ベストアンサー率76% (33/43)
F○に更新を割り当てていると理解しましたが、 F○押下時に Me.更新ボタン.SetFocus にて「郵便番号」よりFocusを移動する事ができると思うのですが・・・ >更新後処理にMe.事項.SetFocus等の記述が不可能 何処の更新後なのか、「事項」とは何なのかが解らない為はずしているかもしれませんが・・・ また、いつの時点でエラーチェックをかけているのでしょうか。 もう少し詳細がわかれば、的確なアドバイスが出せるかも知れません・・・・かもですけど・・・(^ ^;
お礼
説明不足ですみません。 郵便番号だとわかりにくいと思いますので本文で説明させていただきます。 txtHon(テキストボックス『メモ型』)に本文・cmdF5(コマンドボタン)に「更新」 としております。F5を押したタイミングで更新機能を作動させております。 「事項」とは次項目に移動の意味を込めたものですが自分以外わかりませんよね! (*_ _)人ゴメンナサイ >ご指摘通り更新ボタンの変数宣言後の記述をme.txtHon.setfocusから初めて見ました。 一度目の更新の際はエラーも無く動くのですが、修正を行ったあと二回目の更新 を行うと下記のエラーが起こりました。 実行時エラー'cmdF5'にフォーカスを移動することはできません。 *ラベルなど、フォーカスを取得できないコントロールです。 *コントロールの"Visible/可視"プロパティが[No/いいえ]に設定されています。 *コントロールの"Enabled/使用可能"プロパティが[No/いいえ]に設定されています。 ちなみに上記指摘のプロパティは全て[Yes/はい]に設定してます。 せっかく巧く動いたのに(>O<)
- Watapo3
- ベストアンサー率76% (33/43)
>たぶんfocusが移動してないからかな? 本当にこれが原因ならば、単にFocusを移動すれば良いだけでは? 例えば、更新のcmdボタンに・・・ それと、Len("〒000-0000") = 9 ではないでしょうか(「〒,-」込みで) あと余計なお世話かもしれませんが、strYbnはintegerですよね? でしたらintYbnの方が後々一見して変数の型が判るので良いのではないでしょうか。stringと勘違いしそうで・・・(^ ^;
お礼
お礼が遅くなりスミマセン ご返答ありがとうございます >>Me.事項.SetFocusのような作業が出来ない状況<< 現状txtBOXの「Enterキー入力動作」を「行を追加」にして いるので、更新後処理にMe.事項.SetFocus等の記述が不可能 なんです。どのように回避すればいいのか検討がつかない為、 途方に暮れました。 >>出来れば、更新ボタンに何かの記述を付け加えることで 回避したいのですが、おわかりになりますか? >それと・・・ まったくもってその通りです。Lenの方はカット&ペーストミス なんですけど、strYbnはおっしゃる通りinteger型です。 ご忠告ありがとうございます。
お礼
やっぱり失礼だと思い会社にリモートアクセスでFileを転送して テストしてみました。OKぇぇぇぇぇです。チョット涙が出そうでした。 順調に動作してます。下記の記述で完璧でした。 Select Case KeyCode Case vbKeyF1 cmd前頁keydown KeyCode = 0 Case vbKeyF2 KeyCode = 0 Case vbKeyF3 KeyCode = 0 Case vbKeyF4 KeyCode = 0 Case vbKeyF5 If KeyCode = vbKeyF5 Then Me.cmdTxtF5.SetFocus 'ここでFocusを移す cmdTxtF5keydown End If KeyCode = 0 Case vbKeyF6 本当にありがとうございました。 有料でも教えて頂きたい知識をここまで丁寧に解説して 頂き本当に感謝しております。また利用する機会がありましたら よろしくお願い致します。 では失礼します。
補足
こんばんわ!こんな夜遅くまで本当にスミマセン。 私はメールチェックして寝ようかと思っていた所だったので びっくりです。早速会社で試して結果を報告させて頂きます。 私のような初心者に丁寧かつわかり易いご指導をして頂き本当に ありがとうございました。