Microsoft Access 掲示板

マクロでつくった「値の代入」をVBAに変換したらエラー表示がでてしまった。

6 コメント
views
4 フォロー

御世話になります。
フォーム F_1_0 在庫品マスター 入庫の登録画面 にあるテキストボックス 入庫日 の値を OKボタン を押すと
フォーム F_1_1 在庫品マスター 入庫の登録画面 の サブフォーム F_1_2 入出庫台帳 クエリ 入庫力用 のテキストボックス 入出庫日 に入るように 
マクロの「値の代入」を使って マクロをVBAに変換したのですが VBAでの構文が赤文字になってしまいました。

   DoCmd.OpenForm "F_1_1 在庫品マスター 入庫の登録画面", acNormal, "", "[品名ID]=[Forms]![F_1_0 在庫品マスター 入庫の登録画面]![品名ID]", , acNormal
以下が赤文字になってしまいました。

    Forms!F_1_1 在庫品マスター 入庫の登録画面![F_1_2 入出庫台帳 クエリ 入庫力用].Form!入出庫日 = Forms!F_1_0 在庫品マスター 入庫の登録画面!入庫日

サブフォームの指定がされていないからでしょうか?
また、サブフォームに新規追加の場合はどのように記述すれば良いのでしょうか?
余談になりますがサブフォームを帳票フォームで表示している場合、新規のレコードを一番上に表示することは可能なのでしょうか?

igaguri
作成: 2019/05/01 (水) 17:55:03
通報 ...
1
igaguri 2019/05/01 (水) 18:18:23 32a1e@d14a6

Forms![F_1_1 在庫品マスター 入庫の登録画面]![F_1_2 入出庫台帳 クエリ 入庫力用].Form!入出庫日
とすることで赤文字でなくなりました。

新規のレコードを一番上に表示することは可能なのでしょうか?

2

空白を含むオブジェクト名をコード中に記述するには、[]で囲む必要があります。

以下は、回答ではないですが、
以前から気になっていたので、この際アドバイスしておきます。
オブジェクト名に空白を使うのは避けたほうがいいと思います。

コードが読みづらくなりますし、バグやトラブルの原因になりかねません。
また、あまり長すぎるのも読みづらいです。
といって短くしすぎて、意味不明になってもメンテナンスしづらいです。

そのオブジェクトの役割をシンプルかつ明確に表す名前になるように工夫しましょう。

とりあえず空白で区切るのではなく、_(アンダーバー)に変えるだけでも読みやすなります。[]で囲む必要もなくなります。

システムが大きくなるほど改変が大変になりますので、早めに修正しておくことをお勧めします。

例えば、
[F_1_1 在庫品マスター 入庫の登録画面]
は、

F11_入庫の登録_メイン

ぐらいでいいのではないかと思います。
(全体像が分からないのであくまで一例です。このぐらいの長さのオブジェクト名を目指してください、ということです。)

新規のレコードを一番上に表示することは可能なのでしょうか?

下記を参考にしてください。

帳票フォームで新規行を一番上に表示する
帳票フォームで、新規レコードを入力する行(新規行)は通常は一番最後の行に表示されますが、これを一番上に表示したいのですが、何か設定がありますか。 定期的に掲示板で見かける質問ですね。Accessにはそのようなプロパティ設定はないので、別の代案を考えることになります。 要はフォームの一番上で新規データを入力したいということなので、フォームヘッダーに非連結で入力用のコントロールを配置してVBAで追加するよ...
fc2

3
igaguri 2019/05/02 (木) 16:03:53 32a1e@d14a6

ありがとうございます。早速なおします。

4
igaguri 2019/05/02 (木) 19:49:24 32a1e@d14a6

リンクしているHPを早速やってみました。オートナンバー型のフィールドがある場合はどうしたらよいのでしょう?
n をつけて非連結のテキストボックスをつくって 数値を入れなかったらエラーが出てしまったのですが・・・。

5
igaguri 2019/05/02 (木) 19:57:09 32a1e@d14a6

オートナンバー型のフィールド削除したクエリを使えば大丈夫ですか?

6
igaguri 2019/05/02 (木) 20:13:04 32a1e@d14a6

できました。