重複番号をチェックする機能を作っています。
重複番号が入力されると、エラーメッセージが出て、
OKを押すと番号を入れるテキストボックスにカーソルが移動し、空白にする、
という機能をつけましたが、
何度試してもカーソルが、隣のテキストボックスに移動してしまいます。
(エラーメッセージが出て、空白にするという動作は正常に行われます)
SetFocusとGoToControlで試したのですが、
どちらも駄目でした。
原因が分かりません。
どなたかお分かりになりましたら、教えてください。
コードは下記のとおりです。
Private Sub AMコード_AfterUpdate()
If DCount("AMコード", "Q_AM担当者登録チェック") >= 1 Then
MsgBox ("すでに存在する番号です。別の番号を振りなおしてください。"), vbCritical, "番号重複"
AMコード.SetFocus
AMコード = ""
End If
End Sub
No.3ベストアンサー
- 回答日時:
入力チェックはAfterUpdateではなくBeforeUpdateで行います。
Private Sub AMコード_BeforeUpdate(Cancel As Integer)
If DCount("AMコード", "AM担当者テーブル", "AMコード = '" & AMコード & "'") > 0 Then
MsgBox ("すでに存在する番号です。別の番号を振りなおしてください。"), vbCritical, "番号重複"
Cancel = True
Me.Undo
End If
End Sub
上記の例ではクエリで判定せず、直接、元のテーブルに対して直接判定を行っています。
なお、BeforeUpdateの中でヘタにSetFocusを使ったり値の代入を行うと、不測のエラーが出たり無限ループに陥るので、やってはいけません。
また、既存レコードを書き替えようとした場合「Cancel = True」で変更を無効にして元の値に戻しても、レコードは「変更あり」の状態なので、重複エラーの表示後にフォーカスの移動を行おうとすると、自分自身が「重複」として判定されて何も出来なくなってしまうので「Me.Undo」で、レコードの変更を取り消す必要があります。
ありがとうございます!
見事、私の希望通りに動きました!ありがとうございます!
で、二三教えていただきたいのですが・・・
1)「Me.Undo」というのは、レコード全体の変更を取り消す、という命令なのでしょうか?
2)DCount関数の「"AMコード='"&AMコード&"'"」とはどういう意味を持っているのでしょうか?
よろしければ、教えてください!!
No.4
- 回答日時:
>テーブルでフィールドの設定項目を見ても、
>そのような場所がなさそうなので。。。
[インデックス]プロパティで、「はい(重複なし)」を選択して下さい。
この回答への補足
あ、見つかりました。
ありがとうございます。
[インデックス]で「重複なし」を選択できるのは、
1つのテーブル対して1つのフィールドのみのようですね。。。
勉強になりました。ありがとうございます。
No.2
- 回答日時:
こんにちは。
maruru01です。重複チェックをAfterUpdateイベントに記述するのはおかしいと思います。
また、そもそも各コントロールの値は入力時点ではまだ連結したテーブルのフィールドには書き込まれません。
テーブルに書き込まれるのは、レコード自体を移動した時です。
したがって、データのチェックは、フォームのBeforeUpdateイベントに記述して、保存不可の場合は、CancelにTrueをセットして、再入力を促すコントロールにフォーカスを移動した方がいいと思います。
どうしても、各コントロールの入力直後にチェックしたいなら、各コントロールのExitイベントでチェックして、不可なら、CancelにTrueをセットして、フォーカスの移動をキャンセルすればいいと思います。
なお、テーブルのフィールド自体に「重複なし」の設定をしておけば、レコード保存時に自動で規定のメッセージが表示されます。
この回答への補足
>テーブルのフィールド自体に「重複なし」の設定をしておけば、レコード保存時に自動で規定のメッセージが表示されます。
というのは、どのようにしたら良いのでしょう?
テーブルでフィールドの設定項目を見ても、そのような場所がなさそうなので。。。
(ちなみに番号はテキスト型でふっています)
よろしければ、教えてください。
No.1
- 回答日時:
Private Sub AMコード_BeforeUpdate(Cancel As Integer)
If DCount("AMコード", "Q_AM担当者登録チェック") >= 1 Then
MsgBox ("すでに存在する番号です。別の番号を振りなおしてください。"), vbCritical, "番号重複"
AMコード = ""
Canncel = True
End If
End Sub
これで、カーソルは移動しないはずですが。お試しください。
この回答への補足
ご回答、ありがとうございます。
教えていただいたとおりに書き直したところ、
「更新前処理プロパティまたはこのフィールドの入力規則プロパティに設定したマクロまたは関数のために、このフィールドのデータを保存できません。」
というエラーメッセージが返るようになってしまいました。
・・・どうしたらよいでしょう???
教えていただけると、助かります。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Visual Basic(VBA) Changeイベントで複数セルへの貼り付けおよび値削除時に1個目のセルのみエラーになる 3 2022/12/21 09:07
- Access(アクセス) Access IF文でテーブルに存在しない場合の処理について 2 2022/10/10 18:09
- Visual Basic(VBA) 【VBA】Excelで罫線を引きたい 3 2022/07/14 12:04
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- Visual Basic(VBA) InputBoxでキャンセルボタンを押したらファイル自体を閉じたい 3 2022/07/23 17:52
- Visual Basic(VBA) ユーザーフォームで銀行に対応した支店コードの入力ができません Sheet1のA列に銀行名、B列に銀行 5 2022/07/28 17:50
- Visual Basic(VBA) [Excel VBA] このコードでは行の挿入や行の消去をすると13のエラーが出てしまう。 3 2022/12/09 00:29
- Access(アクセス) チェックボックスにチェックが入った後の挙動 1 2022/08/21 12:39
- Visual Basic(VBA) VBAで最新のデータを別シートに転記する方法をお教えください。 3 2022/04/07 19:20
このQ&Aを見た人はこんなQ&Aも見ています
-
あなたの「必」の書き順を教えてください
ふだん、どういう書き順で「必」を書いていますか? みなさんの色んな書き順を知りたいです。 画像のA~Eを使って教えてください。
-
家・車以外で、人生で一番奮発した買い物
どんなものにお金をかけるかは人それぞれの価値観ですが、 誰もが一度は清水の舞台から飛び降りる覚悟で、ちょっと贅沢な買い物をしたことがあるはず。
-
初めて自分の家と他人の家が違う、と意識した時
子供の頃、友達の家に行くと「なんか自分の家と匂いが違うな?」って思いませんでしたか?
-
この人頭いいなと思ったエピソード
一緒にいたときに「この人頭いいな」と思ったエピソードを教えてください
-
ギリギリ行けるお一人様のライン
おひとり様需要が増えているというニュースも耳にしますが、 あなたが「ギリギリ一人でも行ける!」という場所や行為を教えてください
-
Access2010 SetFocusが当たらない
その他(プログラミング・Web制作)
-
どこにもフォーカスを当てたくない
Access(アクセス)
-
Accessの更新後処理で特定の条件を満たしている場合、フォーカスを移動させない方法
PowerPoint(パワーポイント)
-
-
4
サブフォームに対してGoToRecordするには?
その他(Microsoft Office)
-
5
Accessで、1つの項目に複数の置換えを1度でするには?
Access(アクセス)
-
6
ユーザーフォームのSetFocusが働かない?
その他(プログラミング・Web制作)
-
7
access setfocusについて
Access(アクセス)
-
8
フィルタ後のフォームの件数の取得の仕方
Access(アクセス)
-
9
AccessからExcelにエクスポートする時に常に上書きしたい
Excel(エクセル)
-
10
角丸四角形を描きたい
Excel(エクセル)
-
11
ACCESSでVBAから選択クエリの抽出条件を指定したい
Access(アクセス)
-
12
【ACCESS】フォーム名/コントロール名を文字列型変数で指定するには
Access(アクセス)
-
13
アクセスで数値型のフィールドにNullをいれたい
その他(データベース)
-
14
フォーム上の現在アクティブなコントロールの取得
Access(アクセス)
-
15
レコードを保存するコード アクセスvba
その他(Microsoft Office)
-
16
アクセスで入力したデータの順番が変わってしまいます
その他(ビジネス・キャリア)
-
17
ACCESSのフォームで次のレコードに移動しない方法を教えてください
その他(データベース)
-
18
エラー(型が一致しません。)の対処方法
Visual Basic(VBA)
-
19
2つのテーブルに共通するレコードを削除したい
Access(アクセス)
-
20
ACCESS アクセスで他のデータベースからのデータインポート
Access(アクセス)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/22】このサンタクロースは偽物だと気付いた理由とは?
- ・お風呂の温度、何℃にしてますか?
- ・とっておきの「まかない飯」を教えて下さい!
- ・2024年のうちにやっておきたいこと、ここで宣言しませんか?
- ・いけず言葉しりとり
- ・土曜の昼、学校帰りの昼メシの思い出
- ・忘れられない激○○料理
- ・あなたにとってのゴールデンタイムはいつですか?
- ・とっておきの「夜食」教えて下さい
- ・これまでで一番「情けなかったとき」はいつですか?
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Accessのフォームのテキストボ...
-
Accessのフォームで計算した結...
-
AccessVBA SetFocusとGoToCon...
-
アクセスのデータをCSVファイル...
-
初心者なのですが・・・access...
-
ACCESSで他のテーブルからのデ...
-
日付型のフィールドに空白を入...
-
差込印刷での全角表示について...
-
アクセスのエラー「クエリには...
-
SQL文で パラメータが少なすぎ...
-
Accessのテーブルのフィールド...
-
エクセルにおける「フィールド...
-
アクセスで追加した項目に全て...
-
Excleピボットでデータのない部...
-
2つのテーブルに共通するレコ...
-
ACCESS 「パラメータの入力」...
-
クエリ上でフィールド名が2つ...
-
Word差し込み印刷のハイフン(...
-
Accessで、1つの項目に複数の...
-
エクセルデータをワードで差し...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Accessのフォームのテキストボ...
-
AccessVBA SetFocusとGoToCon...
-
Accessのフォームで計算した結...
-
Access フォームの参照先について
-
ACCESSで他のテーブルからのデ...
-
初心者なのですが・・・access...
-
accessについてです。
-
Accessでアンケート集計を構築...
-
Access97のフォームで一人につ...
-
Access2002のリレーションにつ...
-
アクセスのデータをCSVファイル...
-
access 2016で請求書アプリを作...
-
筆ぐるめ2004での住所録のソー...
-
アクセス 各テーブルでのフィ...
-
差込印刷での全角表示について...
-
日付型のフィールドに空白を入...
-
SQL文で パラメータが少なすぎ...
-
アクセスのエラー「クエリには...
-
エクセルにおける「フィールド...
-
2つのテーブルに共通するレコ...
おすすめ情報