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

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

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

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

Access

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

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

Q&A

解決済

1回答

9578閲覧

Access マクロでのサブフォームの指定

Yu-giri

総合スコア11

VBA

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

Access

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

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

0グッド

0クリップ

投稿2020/02/05 06:12

Accessでフォームのコントロール内に10より大きい値が入力された場合に警告のメッセージが入力されるマクロを作成しようとしています。

参照する値はメインフォームに埋め込まれたサブフォーム内の個数というコントロールです。

マクロはIfで作っており、書式は以下の通りです。

If [Forms]![メインフォーム名]![サブフォーム名].[Form]![個数]>10 Then
メッセージボックス
メッセージ 個数が10より多いです。
警告音 はい
メッセージの種類 警告

このマクロを、使用するフォーム上で実行したところ以下のような表示が出て、うまく動作しませんでした。

"Visual BasicプロシージャでOLEオブジェクトとして参照しているオブジェクトは、OLEオブジェクトではありません。"

どこが間違っているかを絞るためメインフォームのみに関するマクロを作成してみたところ([Forms]![メインフォーム名]![個数]>10)問題なく警告メッセージが表示されました。
このことからサブフォームの指定の仕方が間違っていると考えましたが、何が問題かが調べてもわかりません。

解決策を教えていただきたいです。
よろしくお願いします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

[Forms]![メインフォーム名]![サブフォーム名].[Form]![個数]
のサブフォーム名は、フォームの名前ではなく、フォームを埋め込んでいるコントロール(サブフォームコントロール)の名前でないとダメですが、そこは大丈夫ですか。
分からない場合は、下記を参照してください。

サブフォームとサブフォームコントロールの違いとは? - hatena chips

投稿2020/02/05 06:52

hatena19

総合スコア33715

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

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

Yu-giri

2020/02/05 07:12

回答をありがとうございます。 記載していただいたページも作成の際に参考にしたので恐らく間違ってはいないと思います。
hatena19

2020/02/05 07:17

だとすると、他に原因は思いつきませんね。 これを機会にマクロをVBAに書き直してみてはどうですか。 VBAだとエラーがでだときの原因の特定や修正も楽だと思います。
Yu-giri

2020/02/05 07:24

VBAですか、勉強してみます。 "Visual BasicプロシージャでOLEオブジェクトとして参照しているオブジェクトは、OLEオブジェクトではありません。" というエラー文はどういう意味でしょうか。
hatena19

2020/02/05 07:26

私にもちょっと意味不明です。マクロ自体ほとんど使わないので。
hatena19

2020/02/05 12:14

一つ確認ですか、メインフォームにテキストボックスを配置して、コントロールソースに =[サブフォーム名].[Form]![個数] と設定したときに、サブフォームの個数の値が表示されますか。
Yu-giri

2020/02/06 00:26

hatena19さん 回答をありがとうございます。 上記の確認をしたところ正しく表示されました。 一度マクロを消して作り直したところうまくいきました。 恐らくどこかで入力を間違えていたと思われます。 アドバイスを頂きありがとうございました。 また、返事が遅くなってすみませんでした。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問