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

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

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

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

Q&A

解決済

4回答

3411閲覧

Access2016 レポートのテキストボックス For文初期化

mm_teratail

総合スコア7

Access

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

0グッド

0クリップ

投稿2020/06/04 11:53

編集2020/06/05 03:29

Access2016のレポート上に、同じ名称で通番を振った4個テキストボックス(tb1、tb2、tb3、tb4)を配置しました。
このテキストボックスをFor文で初期化する方法が知りたいです。

例えば、フォーム上のテキストボックスでしたら
For cnt = 1 To 4
Me("tb" & cnt) = ""
Next
ということが出来ますが、それをレポート上のテキストボックスでやりたいです。

For cnt = 1 To 4
Reports("レポート名").[tb & Cnt] = ""
Next

と記述しましたが、エラーが出てしましました。
エラーについては、下記のとおりです。
For cnt = 1 To 4
Reports("レポート名").[tb & Cnt] = "" ←エラー発生位置(For文の1回目)
Next

ダイアログ
実行時エラー '2465':
指定した式で参照されている'|1'フィールドが見つかりません。

レポート上のテキストボックスも、フォーム上のテキストボックスと同じようにFor文で通番を回し、初期化する方法が知りたいです。

よろしくお願いいたします。

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

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

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

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

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

DreamTheater

2020/06/05 02:33

エラー内容を記述してください。
mm_teratail

2020/06/05 02:52

ダイアログには、下記が表示されます。 実行時エラー'2465': 指定した式で参照されている'|1'フィールドが見つかりません。 となりました。
DreamTheater

2020/06/05 02:56

実際に実行したVBAコードと共にエラーメッセージを質問文の本文に追記してください。 加えて「どの行で発生したのか」もわかるように説明も追記してください。
mm_teratail

2020/06/05 03:30

質問文も少し変え、エラー箇所を質問文の本文に追記しました。
hatena19

2020/06/05 04:04

このコードはどこに記述してますか。レポートのモジュールでしょうか。その場合、どのイベントですか。 レポートモジュールのコード全体を提示したほうがいいと思います。 そして何をしたいのかを言葉で説明した方かいいと思います。 フォームでは非連結コントロールを初期化することはありますが、レポートでは編集することはなく固定の出力ですので、初期化が必用になることは通常はないです。
guest

回答4

0

質問内容がわかりにくくて申し訳ありませんでした。
それにもかかわらず、回答を頂き、ありがとうございました。

レポートは、フォームから呼び出していて、フォーム上でレポート上のテキストボックスなどに、いろいろと手を加えようと、あれこれしていました。
結局、フォーム上からいろいろとするのは力不足でできませんでした。なので、回答を頂いていた通り、レポート上のモジュールにやりたい事を記述しました。無事にFor文も実装できました。

みなさん、本当にありがとうございました。

投稿2020/06/08 03:16

mm_teratail

総合スコア7

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

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

0

レポートでも、Me("aaa" & i).Value = xxx 的なことは、実現可能です。
ただし、Accessの仕様で、レポートが開かれる前であれば、処理が可能です。
レポートの場合、一回開かれてしまうと、編集ができない仕様なのです。

Reportのイベントには、「Report_Load 読み込み時」というイベントがあります。
ここでは、値やレコードソースを変更することが可能です。

試して下さい。

投稿2020/06/06 01:05

kai_keitai

総合スコア344

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

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

0

ベストアンサー

レポートのモジュールに記述するなら、フォームでもレポートでも記述は同じです。

vba

1For cnt = 1 To 4 2 Me("tb" & cnt) = "" 3Next

上記は、省略記法なので、省略せずに記述すると、下記のようになります。(フォームでもレポートでも同じです。)

vba

1For cnt = 1 To 4 2 Me.Controls("tb" & cnt).Value = "" 3Next

ただし、レポートの場合、コントロールは非連結コントロールである必要があります。
また、コントロールのあるセクションのフォーマット時イベントに設定することになります。
開く時のイベントだとエラーになります。

レポート上では入力できず、固定出力になりますので、通常は初期化が必要になる場面はないはずです。

具体的に何をしたいかを明記したほうが適切な回答がつくでしょう。

投稿2020/06/05 04:12

編集2020/06/05 04:22
hatena19

総合スコア33699

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

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

sousuke

2020/06/05 06:44

実装をみないとなんとも言えませんがプレビューで開いてリボンから印刷する時も初期化されていましたっけ?フォーマット時の初期化は一応意味があったような気がします。
hatena19

2020/06/05 08:10 編集

もちろん実装をみないと何とも言えませんね。意味かある可能性は否定しません。 どのイベントで、何のためにする必要があるのかの説明が欲しいですね。
guest

0

質問がわかりにくいと思います。エラー箇所、エラーメッセージの表記
エラーメッセージをみてどう解釈したのかなど記載すべきです。

単純にtbをリテラルにしてないからなのではないですか?
tbという変数があるのですか?

vba

1'Reports("レポート名").[tb & Cnt] = "" 2Reports("レポート名").["tb" & Cnt] = ""

これを直したとしても

vba

1Me("tb" & cnt) = ""

と同義になるかはわかりません。

追記

vba

1Me("tb" & cnt) = ""

Meはフォームで実行した場合は自分自身のオブジェクト、つまり
Forms("フォーム名")と同義です。
MeはForms("フォーム名")です。置き換えると

vba

1Forms("フォーム名")("tb" & cnt) = ""

となります。Meの部分を入れ替えているつもりなら

vba

1Reports("レポート名").["tb" & Cnt] = ""

は書き方も何もかも違います。フォームと同じように書くならまず同じように書いてみては?
ドットや角括弧などないものを増やさないようにして必要部分だけ書き換えましょう。

逆にフォームを

vba

1Me.["tb" & cnt] = ""

こうして成功するかどうか試してみては?同じエラーが出る気がしますね。

投稿2020/06/05 03:14

編集2020/06/05 03:52
sousuke

総合スコア3828

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

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

mm_teratail

2020/06/05 03:38

質問文を少し直しました。 tbというのは、レポート上のテキストボックスの名称です。 ご指摘いただいた Reports("レポート名").["tb" & Cnt] = "" は試していましたが、本文中のエラーと同じ個所、同じメッセージが出ています。 フォーム上のテキストボックスでは、For文で回す方法で、初期化を実際にしています。 なので、レポート上のテキストボックスでも、同様の事が出来るのかな、と思い試行錯誤している次第です。 そもそも、レポート上では、この方法は実現できない・・・ということでしたら、今回の方法はあきらめようと思っています。
sousuke

2020/06/05 03:41

レポートのvba上ではなぜ Me("tb" & cnt) = "" と書かないのですか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問