海外旅行から帰ってきたら、まず何を食べる?

こんにちは!
質問なのですが、Accessの入力フォームでエラーチェックをかけてます。
「txtMsg」って名前のテキストボックスを1つ用意してエラーの内容を
反映させてます。チェックの内容ですが、Nullチェックと文字数チェック
・禁止文字チェックをかけてます。
>エラーはちゃんと反映します。SetFocusでカーソルをエラー個所に立て
て修正します。ここからが問題なのですが、エラー個所を修正したママの
状態(修正個所にFocusがある状態)でFキーcmdボタンの「更新」ボタン
を押してもテキストボックスにエラーが出たママなんです。
ちなみにFキーを使用できるようにcmdボタンを12個並べて使っております。

>状況
・Fキーを使用して更新した場合のみエラー表示が消えない。
>たぶんfocusが移動してないからかな?
>Me.事項.SetFocusのような作業が出来ない状況(現状の
>txtBOXの「Enterキー入力動作」を「行を追加」にして
>いる為)で、Fキーを使用しつつ更新出来るようにするには?

・クリックで「更新」ボタンを押すとちゃんと更新される。

ってわけで困ってます。
何かいい方法を知っていらしゃいましたらご教授願います。

'------------------必須項目の未入力チェック-------------------

Me.txtMsg = ""
If IsNull(Me.郵便番号) Or Me.郵便番号 = "" Then
Me.txtMsg = "郵便番号データが未入力です。( ̄▽ ̄;)!!"
Me.郵便番号.SetFocus
Exit Sub
End If
'--------------------図版CD文字数チェック--------------------
strYbn = Len(Me.郵便番号)
If strYbn <> 10 Then
Me.txtMsg = "『〒000-0000』形式にして下さい! (´∞`)"
Me.郵便番号.SetFocus
Exit Sub
End If

A 回答 (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」で間違いないですよね。
・・・あっ、一回目の更新は実行できたのだから間違いないか (^ ^;

この回答への補足

こんばんわ!こんな夜遅くまで本当にスミマセン。
私はメールチェックして寝ようかと思っていた所だったので
びっくりです。早速会社で試して結果を報告させて頂きます。
私のような初心者に丁寧かつわかり易いご指導をして頂き本当に
ありがとうございました。

補足日時:2001/10/24 00:05
    • good
    • 0
この回答へのお礼

やっぱり失礼だと思い会社にリモートアクセスで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
本当にありがとうございました。
有料でも教えて頂きたい知識をここまで丁寧に解説して
頂き本当に感謝しております。また利用する機会がありましたら
よろしくお願い致します。
では失礼します。

お礼日時:2001/10/24 01:20

>実行時エラー'cmdF5'にフォーカスを移動することはできません。


>*ラベルなど、フォーカスを取得できないコントロールです。
>*コントロールの"Visible/可視"プロパティが[No/いいえ]に設定されています。
>*コントロールの"Enabled/使用可能"プロパティが[No/いいえ]に設定されています。
>ちなみに上記指摘のプロパティは全て[Yes/はい]に設定してます。

うぅ~ん・・・
かなり自信ありませんが、SetFocusの前に

Me.Repaint

と、一行入れてみて下さい・・・ダメかな(; ;)
    • good
    • 0
この回答へのお礼

何度も何度もごめんなさい!
やっぱり駄目みたいです。

実行時エラー'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
'入力禁止文字チェック(全角空白)

お礼日時:2001/10/23 19:00

F○に更新を割り当てていると理解しましたが、


F○押下時に

Me.更新ボタン.SetFocus

にて「郵便番号」よりFocusを移動する事ができると思うのですが・・・

>更新後処理にMe.事項.SetFocus等の記述が不可能

何処の更新後なのか、「事項」とは何なのかが解らない為はずしているかもしれませんが・・・
また、いつの時点でエラーチェックをかけているのでしょうか。
もう少し詳細がわかれば、的確なアドバイスが出せるかも知れません・・・・かもですけど・・・(^ ^;
    • good
    • 0
この回答へのお礼

説明不足ですみません。

郵便番号だとわかりにくいと思いますので本文で説明させていただきます。

txtHon(テキストボックス『メモ型』)に本文・cmdF5(コマンドボタン)に「更新」
としております。F5を押したタイミングで更新機能を作動させております。
「事項」とは次項目に移動の意味を込めたものですが自分以外わかりませんよね!
(*_ _)人ゴメンナサイ

>ご指摘通り更新ボタンの変数宣言後の記述をme.txtHon.setfocusから初めて見ました。

一度目の更新の際はエラーも無く動くのですが、修正を行ったあと二回目の更新
を行うと下記のエラーが起こりました。

実行時エラー'cmdF5'にフォーカスを移動することはできません。
*ラベルなど、フォーカスを取得できないコントロールです。
*コントロールの"Visible/可視"プロパティが[No/いいえ]に設定されています。
*コントロールの"Enabled/使用可能"プロパティが[No/いいえ]に設定されています。
ちなみに上記指摘のプロパティは全て[Yes/はい]に設定してます。
せっかく巧く動いたのに(>O<)

お礼日時:2001/10/23 17:29

>たぶんfocusが移動してないからかな?



本当にこれが原因ならば、単にFocusを移動すれば良いだけでは?
例えば、更新のcmdボタンに・・・

それと、Len("〒000-0000") = 9 ではないでしょうか(「〒,-」込みで)
あと余計なお世話かもしれませんが、strYbnはintegerですよね?
でしたらintYbnの方が後々一見して変数の型が判るので良いのではないでしょうか。stringと勘違いしそうで・・・(^ ^;
    • good
    • 0
この回答へのお礼

お礼が遅くなりスミマセン
ご返答ありがとうございます

>>Me.事項.SetFocusのような作業が出来ない状況<<
現状txtBOXの「Enterキー入力動作」を「行を追加」にして
いるので、更新後処理にMe.事項.SetFocus等の記述が不可能
なんです。どのように回避すればいいのか検討がつかない為、
途方に暮れました。
>>出来れば、更新ボタンに何かの記述を付け加えることで
回避したいのですが、おわかりになりますか?

>それと・・・
まったくもってその通りです。Lenの方はカット&ペーストミス
なんですけど、strYbnはおっしゃる通りinteger型です。
ご忠告ありがとうございます。

お礼日時:2001/10/23 15:08

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

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

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