次の方法で共有

VBAでフォームの値を変数に格納 ステップで確認OK、通常動作で格納されない

Anonymous
2013-12-25T03:40:32+00:00

お世話になります。

いつも参考にさせていただいています。

access2003のMDBファイルを2010で動作させた時ですが

値がテーブル格納されず、確認したところ

コマンドボタンクリック時にブレークポイントを付け

ステップインし格納されているか、確認していくと格納され

そのまま実行すると、格納されない事がわかり対応したく思いますがご教示いただけないでしょうか。

Dim s, s1, s2, s3 As Currency

  s = Me.小計

    'Me!税抜合計 = Me!小計

    Me!税抜合計 = s

    s1 = Me.消費税計

    'Me!消費税 = Me!消費税計

    Me!消費税 = s1

    s2 = Me.総額

    'Me!伝票合計 = Me!総額

    Me!伝票合計 = s2

上記の部分で、Me.小計、Me.消費税計、Me.総額はフォームのテキストボックスの値です。

Me!税抜合計、 Me!消費税 、Me!伝票合計はフォームのレコードソースのフィールドです。

コメントアウトの部分はaccess2003の時はこれで正常動作しておりました。

変数のデータ型をlongでも試しましたが、結果は同じでした。

デバックでOKで通常動作でNGとなると対応策がわからず、困っています。

よろしくお願いします。

因みに、ファイル形式を2003のままでも、2010形式に変換しても、同じでした。

開発者テクノロジ | Visual Basic for Applications

ロックされた質問。 この質問は、Microsoft サポート コミュニティから移行されました。 役に立つかどうかに投票することはできますが、コメントの追加、質問への返信やフォローはできません。

0 件のコメント コメントはありません

質問作成者が受け入れた回答

Anonymous
2013-12-27T09:27:23+00:00

フォーム内のテキストボックスのコントロールソースにかなり複雑な演算式が設定してあり、しかも別のテキストボックスも参照して連鎖的に演算がすすむような設定になってますか。

このような場合、環境やタイミングにより、演算が終わる前にコードの処理が進んでしまう場合があるようです。

難しいのは、うまくいくときはうまくいくので、対策できたと思っても、どの状況でもそれでいいのか確信が持てないことですね。

確実な対策は、コントロールソースで計算したものを参照するのではなく、演算をコード内で完結させることかなと思っています。

この回答は役に立ちましたか?

0 件のコメント コメントはありません

6 件の追加の回答

並べ替え方法: 最も役に立つ
  1. Anonymous
    2013-12-27T08:41:24+00:00

    情報有難うございます。

    Me.小計.Requery

    s = Me.小計

    Me.Recalc

    s = Me.小計

    どちらを記述しても同じでした。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  2. Anonymous
    2013-12-27T02:53:36+00:00

    小計 や 消費税計、総額 のコントロールソースには計算式が入ってますか。

    どのような計算式でしょうか。代入する前に、テキストボックスの Requery、フォームの Recalc を実行したらどうでしょうか。

    Me.小計.Requery

    s = Me.小計

    とか、

    Me.Recalc

    s = Me.小計

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  3. Anonymous
    2013-12-27T00:45:25+00:00

    情報有難うございます。

    確認遅くなりすいません

    debug.print s

    debug.print s1

    debug.print s2

    と記述して、イミディエイトウィンドウで確認していると

    F8で1行づつ実行すると

    値が格納され

    F5キーで、そのまま実行すると

    格納されないようです

    フィールド名は変更しました

    引き続き、よろしくお願いします。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  4. Anonymous
    2013-12-26T00:05:04+00:00

    ブンKobe さん、こんにちは。

    投稿ありがとうございます。

    Access 2003 で正常に動いていた mdb ファイルが Access 2010 では思った通りの動作にならないので情報を集めたい、ということですね。

    ブレークポイントを設定してステップ イン実行すると大丈夫、というのは確かに不思議だな、と思いました。

    テキスト ボックスの値を変数に入れた後、Debug.Print で変数中身を書き出すなどの方法で、値を受け渡す過程 (テキスト ボックス → 変数 → テーブル ) に要因がないかを切り分けてみてはどうでしょうか。

    あと、テーブルのフィールド名とテキスト ボックスの名前がかぶっていると意図しない動作になることがあるようです。テキスト ボックスの名前を 「小計」 から 「txt小計」 という感じに変えておくのがよいと思います。

    確認結果などの書き込み、お待ちしています。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません