レポート上に各商品(商品A~商品C)の販売日数を表示するためのテキストボックスがあります。各テキストボックスにはコントロールソースとして次のように設定しています。サブレポートのテキストボックス「販売日数」を設定し、販売実績のない商品Cの場合のエラー処理も加える。
=IIf(IsError([サブレポート]![販売日数]),0,[サブレポート]![販売日数])
レポート
商品 | 販売日 | 販売日数 |
---|---|---|
商品A | 1/5 | 3 |
1/7 | ||
1/9 | ||
商品B | 1/5 | 2 |
1/6 | ||
商品C | 0 |
サブレポート
※サブレポートの商品ヘッダー中に、各商品ごとの販売日数を集計するテキストボックス「販売日数」を配置しています。
商品 | 販売日 | 個数 |
---|---|---|
商品A | 1/5 | 1 |
商品A | 1/7 | 2 |
商品A | 1/9 | 4 |
商品B | 1/5 | 1 |
商品B | 1/6 | 1 |
一方、VBAで、サブレポートのテキストボックス「販売日数」を参照して各商品の販売日数を取得しようとする場合に、商品Cの場合のエラーを処理するため、下記のコードを書いても、「実行時エラー'2427'指定した式には値がありません。」が表示されます。どのように変更すればエラーを処理できますでしょうか。「[サブレポート]![販売日数].value」としても同じでした。よろしくお願いします。
VBA
1Private Sub 詳細_Format(Cancel As Integer, FormatCount As Integer) 2 3(罫線を引く処理) 4 5If IsError([サブレポート]![販売日数]) Or Isnull([サブレポート]![販売日数]) Or IsEmpty([サブレポート]![販売日数]) Then 6 Debug.Print 0 7Else 8 Debug.Print [サブレポート]![販売日数] 9End If 10 11End Sub
(追記)ご回答ありがとうございます。コードは、メインレポートの詳細セクションのフォーマット時に記述しています。VBAで取得して、メインレポートの商品ごとの縦罫線の長さの計算(各商品の販売日数に応じて変わる)に利用したいと思っています。
(追記)
ご回答ありがとうございます。
エラートラップのご説明参考になります!
Errオブジェクトというものを利用すればよいのですね!
>あるいは、サブレポートの高さに合わせたいなら、Me.[サブレポート].Height で取得できます(印刷時イベントでないとダメだったかも)。
仰る通り、フォーマット時イベントでは拡大が反映されずデザインビューで配置した時のままの大きさが返されました。印刷時イベントでは拡大が反映され数値が変化しました。VBAでの罫線の描画処理も印刷時イベントでするように変更しました。[サブレポート]![販売日数]の取得からの一連の処理が減るので助かります。
回答1件
あなたの回答
tips
プレビュー