Microsoft Access 掲示板

VBAでレポートのグループレベル1ヘッダーへコントロールを作成したい

5 コメント
views
4 フォロー

早速ですが、VBAでレポートのグループレベル1ヘッダーへコントロールを作成する方法を教えて下さい。
以下のコードの6行目で
「実行時エラー:2462 
 セクション番号の指定が正しくありません。」
と、エラーが出ます。
1> Dim oRpt as Report
2> DoCmd.OpenReport "レポート名", acViewDesign
3> DoCmd.RunCommand acCmdReportHdrFtr
4> Set oRpt = Screen.ActiveReport
5> oRpt.Section(acDetail).Height = 1000
6> oRpt.Section(acGroupLevel1Header).Height =1000
目的は、CreateReportControl でグループレベル1ヘッダーセクションに
コントロールを作成したいのですが、このエラーで先に進めません。
どうぞよろしくお願いいたします。

hhmmj553
作成: 2019/10/29 (火) 13:49:13
通報 ...
1

デザインビューでグループヘッダーを追加したり、コントロールを追加するのではなくて、VBAでする理由と目的はなんでしょうか。

事前に追加しておいて、必要に応じてVBAで表示/表示をコントロールするほうがはるかに楽ですし、デザインビューで開く必要がないので安全です。

2
名前なし 2019/10/29 (火) 16:06:37 60917@9043e

VBAでする理由:
・グロス集計したレコードセットを元にレポートを作成しますので、列見出しが変わります。手作業では大変なのでVBAで作成したいのです。
目的:
・プロジェクトの分析(プロパティ値の表示)

今、自分のプロジェクトのフィールドのプロパティ値、コトントロールのプロパティ値を一覧表にしようとしています。
その時、フィールド名が行見出し、プロパティ名が列見出し、プロパティ値が値になるように、クロス集計しています。
そして、グループレベル1にオブジェクト名を表示させたいのです。
レポートではページヘッダーにプロパティ名を縦長で1行に表示させていますが、とても全部を表示させることはできませんので、重要なプロパティ値、値に変更を加えたプロパティ値のみ表示させています。
この列見出しとしているプロパティ名がプロジェクト毎に変わるので、VBAでレポートを作成したいのです。
ここまではできているのですが、グループレベル1ヘッダーにコントロールを作成できれば、完璧だと思うのです。
よろしくお願いします。

3

下記が参考になりませんか。フォームでの場合ですが、レポートでも同様な方法で可能です。

列数が変化するクロス集計クエリと連結するフォーム - hatena chips

列数が変化するクロス集計クエリと連結するフォーム - hatena chips

お勧めはしませんが、どうしてもVBAでグループヘッダーを追加したいという場合は、下記が参考になるかと。

CreateGroupLevel メソッド (Access) | Microsoft Docs

4
hhmmj553 2019/10/29 (火) 17:50:13 fa06c@9043e

 CreateGroupLevelメソッドの存在は知りませんでした。
さっそく試してみようと思います。
ありがとうございました。

5
hhmmj553 2019/10/29 (火) 18:02:52 fa06c@9043e

グループレベル1ヘッダーにコントロールを作成できました。
ありがとうございました。