質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

Q&A

解決済

1回答

379閲覧

アクセス コントロールソースが設定されているコンボボックスをテキストボックスが特定の文字になる時連動させたい

0122

総合スコア2

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

0グッド

0クリップ

投稿2022/11/10 01:43

前提

お世話になります。
アクセスで見積システムを作成しています。

実現したいこと

受注確認というテキストボックスの表示が受注となったとき、進捗状況というコンボボックスの値を受注にしたいです。

発生している問題・エラーメッセージ

エラーは表示されませんが、動作しません。
どう修正すればよいでしょうか?

該当のソースコード

Private Sub 受注確認_AfterUpdate()

If Forms![Frm見積書]![受注確認] = "受注" Then
Forms![Frm見積書]![進捗状況] = "受注"
End If

End Sub

試したこと

コンボボックスをテキストボックスに置き換えてみましたが上手くいきませんでした。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sk.exe

2022/11/10 01:50

> エラーは表示されませんが、動作しません。 > Private Sub 受注確認_AfterUpdate() ・そのイベントプロシージャ自体が実行されない。 > If Forms![Frm見積書]![受注確認] = "受注" Then ・イベントプロシージャは実行されるが、上記の比較条件式の結果が False になる。 > Forms![Frm見積書]![進捗状況] = "受注" ・比較条件式の結果は True になるが、[進捗状況]の値が書き換わらない。 のどれに該当するのかについて具体的に明記し、原因を切り分けされることをお奨めします。
0122

2022/11/10 02:14

ご回答ありがとうございます! 切り分けるとこんなに動作があるのですね…そこまで理解が及んでいませんでした。 確認をしたいのですが、どのように調べれば良いか分かりませんでした。 確認の方法についてご教示頂けませんでしょうか? よろしくお願いいたします。
sk.exe

2022/11/10 04:47

1. そのフォームをデザインビューで開き、 テキストボックス[受注確認]を選択する。 2. プロパティシートを開いて[イベント]タブをクリックし、 テキストボックス[受注確認]の[更新後処理]プロパティが 「[イベント プロシージャ]」に設定されていることを確認する。 もし設定されていない場合はリストから選択する。 3. [更新後処理]プロパティの右端にある[...]ボタンをクリックし、 VBE のコードウィンドウ上に以下のイベントプロシージャが 表示されるか否かを確認する。 > Private Sub 受注確認_AfterUpdate() 4. 上記のステートメントにカーソルを移動させ、 F9 キーをクリックするなどしてブレークポイントに設定する。 5. フォームのデザインビューに戻り(必要があれば上書き保存し)、 そのフォームをフォームビューで開き直す。 6. テキストボックス[受注確認]に"受注"という文字列を入力し、 Enter キーをクリックして AfterUpdate イベントを発生させ、 上記 4 の手順で設定したブレークポイントでコードが中断されるか どうかを確認する。 (もしコードが中断されなかった場合は、そのイベントプロシージャが 呼び出されていないということになる) 7. 正しくコードが中断された場合は、F8 キーをクリックして 以下のステートメントまでステップインする。 > If Forms![Frm見積書]![受注確認] = "受注" Then 8. 続けて F8 キーをクリックし、以下のステートメントに 制御が移るか否かを確認する。 > Forms![Frm見積書]![進捗状況] = "受注" 9. 更に End Sub ステートメントを抜けるまで (イベントプロシージャの実行が完了するまで) F8 キーのクリックを繰り返す。 10. フォームウィンドウに戻り、コンボボックス[進捗状況]の値が どのように表示されているかを確認する。 とりあえず以上のような手順にしたがってデバッグを行なってみて下さい。 また、補足情報としてコンボボックス[進捗状況]の 以下のプロパティの設定値を明記するようにして下さい。 ・[値集合タイプ]プロパティ ・[値集合ソース]プロパティ ・[連結列]プロパティ ・[列数]プロパティ ・[列幅]プロパティ [値集合タイプ]プロパティの設定値が「テーブル/クエリ」であり、 かつ[値集合ソース]プロパティにいずれかのテーブル/クエリの名前が 設定されている場合は、そのテーブル/クエリの定義内容も合わせて 明記された方がよいでしょう。
0122

2022/11/11 01:40

ありがとうございます! 非常に分かりやすかったです! 6で止まっている状態でした。 受注確認のテキストボックスがif文で条件を満たした場合受注になるように設定しています。 その場合更新後後処理のイベントを起動させることはできないのでしょうか? 受注確認のテキストボックスにif文ではなく、直接入力した場合を試したのですが、そちらは10まで確認出来て全て正常に動作しました。 以下補足を明記します ・値集合タイプ 値リスト ・値集合ソース "見積作成中";"回答待ち";"受注";"失注" ・連結列 1 ・列数 1 ・列幅 2.54cm 値集合タイプはテーブル/クエリで無い為割愛させて頂きます。
sk.exe

2022/11/11 06:31

> 6で止まっている状態でした。 ・[受注確認]の AfterUpdate イベントが発生し、  先に設定したブレークポイントでコードが中断された。  (想定した通りの状態) ・[受注確認]に対して任意の文字列を入力して Enter キーをクリックしたが、  AfterUpdate イベントが発生しなかった(ので、イベントプロシージャも  呼び出されなかった) どちらの意味でおっしゃっているのでしょうか。 > 受注確認のテキストボックスがif文で条件を満たした場合受注になるように設定しています。 > 受注確認のテキストボックスにif文ではなく、直接入力した場合を試したのですが、 > そちらは10まで確認出来て全て正常に動作しました。 それは[受注確認]が連結テキストボックスでも非連結テキストボックスでもなく、 [コントロールソース]プロパティに IIf 関数を用いた式が設定された 演算テキストボックスである、ということを意味しているのでしょうか。
0122

2022/11/11 07:29

・[受注確認]に対して任意の文字列を入力して Enter キーをクリックしたが、  AfterUpdate イベントが発生しなかった(ので、イベントプロシージャも  呼び出されなかった) こちらの動作でした。 それは[受注確認]が連結テキストボックスでも非連結テキストボックスでもなく、 [コントロールソース]プロパティに IIf 関数を用いた式が設定された 演算テキストボックスである、ということを意味しているのでしょうか。 →そうですね。演算テキストボックスを用いています。
guest

回答1

0

ベストアンサー

そうですね。演算テキストボックスを用いています。

TextBox.AfterUpdate イベント (Access)

コントロールに対する AfterUpdate イベント マクロまたはイベント プロシージャは、コントロールのデータが変更された場合にのみ発生します。 このイベントは、演算コントロールの値が変更された場合には発生しません。 フォームに対する AfterUpdate イベント マクロまたはイベント プロシージャは、レコード (コントロール) のデータが変更された場合にのみ発生します。

[受注確認]が演算テキストボックスならば AfterUpdate イベントが発生することはなく、当然そのイベントプロシージャが呼び出されることもありません。

投稿2022/11/11 08:00

sk.exe

総合スコア732

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0122

2022/11/15 01:13

お返事遅くなりました! そうなんですね…別の方法を考えた方がよさそうです。 ご回答ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問