🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
VBA

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

Access

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

スクロール

スクロールとは、ディスプレイスクリーン上において連続的にコンテンツが滑っていくことを指します。

Q&A

解決済

3回答

6010閲覧

Accessのサブフォームとしてレポートを設定すると、マウスホイールによるスクロールができない

yuriko_bridge

総合スコア3

VBA

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

Access

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

スクロール

スクロールとは、ディスプレイスクリーン上において連続的にコンテンツが滑っていくことを指します。

0グッド

0クリップ

投稿2021/01/22 00:27

編集2021/01/22 05:24

前提・実現したいこと

Accessのフォームのサブフォームとしてレポートを追加し、
フォーム上で絞り込みを行った結果をレポートに反映している。
その際なぜか、サブフォームとなっているレポートの
「マウスホイールによるスクロール」ができないため、できるようにしたい。
なお、レポートの表示種類は「レポートビュー」にしたい。

できない場合は、フォームとレポートを別々に同時表示して連携することも考えている。

発生している問題・エラーメッセージ

Accessのフォームのサブフォームとしてレポートを追加した場合、
マウスホイールによるスクロールができない。
スクロールバー自体は表示されており、
マウスドラッグと、スクロールバーの空いているところをクリックしてのスクロールはできる。

該当のソースコード

なし

試したこと

①同じメインフォーム内に、サブフォームとして別のフォームを追加した場合は、
マウスホイールによるスクロールができる。
そのため、フォームの設定に問題があるとは考えられない。

②レポートを単体で「レポートビュー」で表示した場合、
普通にマウスホイールでスクロールができる。

補足情報(FW/ツールのバージョンなど)

Access2016

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

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

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

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

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

sazi

2021/01/22 04:07 編集

サブフォームにレポートはどのように埋め込んでいますか? 埋め込んだレポートにフォーカスが無くスクロールはフォームに対して行われているか、 埋め込んだコントロールのスクロールバーが有効になっていないんだと思われます。
yuriko_bridge

2021/01/22 04:24

ありがとうございます。 レポートをフォームにドラッグして埋め込みました。 スクロールバーは表示されており、 マウスドラッグとによるスクロールと、 スクロールバーの空いているところをクリックしてのスクロールはできます。 しかし、マウスホイールによるスクロールができません。
guest

回答3

0

自己解決

ご回答いただきありがとうございました。
結局、レポートに以下のコードを挿入することで解決しました。

Private Sub Report_MouseWheel(ByVal Page As Boolean, ByVal Count As Long) If Not Me.Dirty Then If (Count < 0) Then SendKeys "{UP}" ElseIf (Count > 0) Then SendKeys "{DOWN}" End If Else End If End Sub

投稿2021/05/20 07:51

編集2021/05/21 07:42
yuriko_bridge

総合スコア3

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

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

sazi

2021/05/20 07:57

フォーカスをレポートビューにあてるタイミングはどのようにしましたか?
yuriko_bridge

2021/05/20 08:01

特に何もしていませんが、問題なくスクロールできます。 親フォームにフォーカスがある状態でも、サブレポートのスクロールが行われます。
sazi

2021/05/20 09:21

情報提供ありがとうございました。
yuriko_bridge

2021/05/21 01:09

こちらこそ、ありがとうございました! また機会があればよろしくお願いします。
guest

0

実際にやったことはないので、アイデアだけの提案です。
できるかどうかはやってみないと分かりません。

やりたいことは、フォームのなかに、レポートビューを埋め込んで、かつ、マウスホイールでスクロールできるようにしたい、ということですよね。

フォーム上にサブレポートとして埋め込むとマウスホイールでスクロールできないですが、単独でレポートビューを開いたときはマウスホイールでスクロールできます。
ということで、Win API を使って、レポートビューをフォームの子ウィンドウにしたら、見た目はフォーム上にレポートビューがあるように見えて、マウスホイールでのスクロールもできるかも知れません。

下記で、レポートの印刷プレビューをフォームの子ウィンドウにするサンプルがあります。レポートビューでも同様にできると思います。試してみてはどうでしょうか。

レポートの印刷プレビューウィンドウにボタンを配置する - hatena chips


簡単にサンプルを作成してみました。
フォーム上にコマンドボタンを配置して、cmdClose という名前にします。

フォームモジュールに下記のコードを記述してください。

vba

1Private Declare PtrSafe Function SetParent Lib "user32" Alias "SetParent" ( _ 2 ByVal hWndChild As LongPtr, _ 3 ByVal hWndNewParent As LongPtr) As LongPtr 4 5Const docName As String = "レポート名" 6 7Private Sub Form_Load() 8 DoCmd.OpenReport docName, acViewReport 'レポートビューで開く 9 10 'レポートの位置とサイズをフォームに合わせて調整 11 Dim TopPos As Long: TopPos = Me.cmdClose.Top + Me.cmdClose.Height + 100 12 DoCmd.MoveSize 0, TopPos, Me.InsideWidth, Me.InsideHeight - TopPos 13 'レポートの親ウィンドウをフォームに設定 14 SetParent Reports(docName).Hwnd, Me.Hwnd 15End Sub 16 17Private Sub cmdClose_Click() 18 DoCmd.Close acForm, Me.Name 19End Sub

これで、フォーム上にレポートビューが埋め込まれているように見えて、かつ、マウスホイールでスクロールできるのを確認しました。

投稿2021/01/26 10:35

編集2021/01/26 11:00
hatena19

総合スコア34073

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

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

yuriko_bridge

2021/01/27 08:56

ありがとうございます。 試してみます。
yuriko_bridge

2021/05/18 06:24

すみません、色々試してみましたがうまくいかない部分があります。 ①レポートのスクロールバーが出ない。 ②最後までスクロールできず、一番下の文字が途中で切れてしまう。
yuriko_bridge

2021/05/21 01:10

情報提供ありがとうございました。 色々悩みましたが、自己解決できました。
guest

0

マウスホイールによるスクロールができるようにしたい。

①同じメインフォーム内に、サブフォームとして別のフォームを追加した場合は、
マウスホイールによるスクロールができる。

以下の記事によると、リンク先にあるようなイベント処理を実装しないと駄目な気がします。
マウスホイールを使用して Access 2007 または Access 2010 フォームのレコードをスクロールすることはできません。

現象

Microsoft Office Access 2007 または Microsoft Access 2010 のフォームビューで、マウスホイールを使用してフォームのレコード間を移動しようとすると、何も起こりません。 ただし、フォームをデータシートビューに切り替えると、マウスホイールを使用してレコードを上下に移動することができます。

原因

フォームビューでのマウスホイールの動作は、Access 2007 および Access 2010 で故意に変更されているため、ユーザーの混乱が減少します。 以前のバージョンの Access では、マウスホイールでスクロールバーが移動したり、マウスホイールでレコードが上下に移動したりすることがあります。 マウスホイールの動作が整合状態になり、スクロールバーのみが移動するようになります。 この動作を変更するプロパティはありません。

対応としては、以下が参考になるかと。
MouseWheel イベントの使い道 | YU-TANG's MS-Access Discovery

投稿2021/01/22 05:15

編集2021/01/22 05:20
sazi

総合スコア25327

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

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

yuriko_bridge

2021/01/27 00:18

ご回答ありがとうございます。 サブフォームとしてフォームを追加した場合は、マウスホイールによるスクロールができます。 サブフォームとしてレポートを追加した場合は、マウスホイールによるスクロールができません。 申し訳ありませんが、このリンクを応用する方法がわかりませんでした。
sazi

2021/05/20 07:53 編集

構成が良く分かりませんでしたので、回答したのはあくまでフォームビューの話です。 構成がサブフォームにレポートビューを埋め込んでいるなら、マウスホイールしたいのはレポートビューという事になりますから、フォーカスをレポートビューに設定したらマウスホイールされませんか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問