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

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

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

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

Access

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

Q&A

解決済

1回答

1801閲覧

Access VBA サブフォーム 表示エラー

Yoshikun_0945

総合スコア224

VBA

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

Access

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

0グッド

0クリップ

投稿2019/11/01 01:34

編集2019/11/01 01:35

前提・実現したいこと

メインフォームにいくつかのサブフォームを配置し、
サブフォーム1のボタンを押すと、メインフォームに配置しているF02_1_入力画面のテキストボックスに表示する値を変更するプログラムを作成しています。

表示する値を変更後に問題が発生しました。

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

テキストボックスに表示する値を変更したところ、F02_1_入力画面を開くと変更後の値が表示されていますが、メインフォームのサブフォームエリアには、値変更後のF02_1_入力画面が表示されていません。

該当のソースコード

VBA

1'レコードセットを設定する 2 Set rs2 = CurrentDb.OpenRecordset("Q99_貯蔵品") 3 'カウント用変数を宣言し、初期値を設定する 4 Dim i As Integer: i = 0: Hiragana(1) = -1: Hiragana(2) = -1 5 'レコードが終わるまで繰り返す 6 Do Until rs2.EOF 7 '現在のレコードの貯蔵品名の読みが押されたひらがなと一致した場合 8 'Hiragana(0)には押されたボタンのひらがなが格納されています。 9 If Left(rs2(2), 1) = Hiragana(0) And Hiragana(1) = -1 Then 10 '現在のレコード番号を変数に格納する 11 '(押されたひらがなと一致するひらがなのスタート番号) 12 Hiragana(1) = i 13 End If 14 '押されたひらがなと不一致になった場合 15 If (Left(rs2(2), 1) <> Hiragana(0)) And (Hiragana(1) >= 0 And Hiragana(2) = -1) Then 16 '一致する最後のレコード番号を変数に格納する 17 Hiragana(2) = i - 1 18 '繰り返し処理から強制離脱する 19 Exit Do 20 End If 21 '次のレコードに移動し、カウント変数を加算する 22 rs2.MoveNext: i = i + 1 23 '繰り返す 24 Loop 25 'レコードセットを解除する 26 Set rs2 = Nothing 27 28 '押されたひらがなで始まる貯蔵品名がない場合 29 If Hiragana(1) = -1 Then 30 MsgBox Hiragana(0) & "で始まる貯蔵品名はありません。", vbOKOnly + vbInformation, _ 31 "用度請求配達システム" 32 Exit Sub 33 End If 34 35 'フォーム名を変数に格納する 36 strForm = "F02_1_入力画面" 37 '変数を宣言し、初期値を指定する 38 Dim j, k, moji As Integer: j = 1: k = 0: moji = 98 39 'ひらがなが一致する件数だけ繰り返し処理を実行する 40 For i = Hiragana(1) To Hiragana(2) 41 '1行(レコード)分繰り返す 42 For k = 0 To 10 43 'フィールド(列)番号が2以外の場合 44 If k <> 2 Then 45 '出力に使用するテキストボックス名を変数に格納する 46 strTxt = "Txt_" & Chr(moji) & CStr(j) 47 'フィールド(列)番号が3・5以外の場合 48 If k <> 3 And k <> 5 Then 49 'テキストボックスに貯蔵品情報を表示する 50 Forms(strForm).Controls(strTxt).Value = Stock(i, k) 51 End If 52 '文字コードを加算する 53 moji = moji + 1 54 End If 55 Next 56 '表示件数用カウント変数を加算する 57 j = j + 1: moji = 98 58 Next

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

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

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

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

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

guest

回答1

0

ベストアンサー

コードは私に解読不能なので、とりあえず、

テキストボックスに表示する値を変更したところ、F02_1_入力画面を開くと変更後の値が表示されていますが、メインフォームのサブフォームエリアには、値変更後のF02_1_入力画面が表示されていません。

サブフォームは再クエリしないと、他での変更は自動では反映されません。
サブフォームの再クエリは下記のような構文になります。

vba

1Forms!メインフォーム名!サブフォームコントロール名.Form.Requery

投稿2019/11/01 04:51

hatena19

総合スコア33620

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

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

Yoshikun_0945

2019/11/01 08:45 編集

回答いただいた方法を実行してみましたが、サブフォームの値が変わっているのに、メインフォーム上の表示が変わることがありませんでした。 こちらはモジュールにて実行しております。 ’Forms!親フォーム名!サブフォーム表示エリア名.Form.Requery Forms!F02_2_注文!F02_入力.Form.Requery
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問