Microsoft Access 掲示板

重ねたコントロールの位置(前面、背面)が勝手に変わってしまう現象について

4 コメント
109 views
4 フォロー

いつも参考にさせていただいております。

現在、Access365で作業しているのですが、
フォームのデザインビュー上で、重なったコントロールを「Tabキー」でカーソル移動した際に、
前面、背面が入れ替わってしまうことがあるのです。

以下、再現手順です。
1.フォームにテキストボックス1、テキストボックス2を追加します。
2.テキストボックス1の上にテキストボックス2を重ねます(このとき、テキストボックス2が最前面になっています)。
3.テキストボックス2を選択し、「Tabキー」で背面にあるテキストボックス1を選択します。
4.テキストボックス1をリボンの「配置」の「最前面へ移動」で最前面にします。
5.いったん保存して閉じます。
6.改めてデザインビューを開き、最前面のテキストボックス(4で最前面にしたテキストボックス1)を選択します。
7.「Tabキー」を押して背面のテキストボックス2にカーソルを移動します。
8.この時テキストボックス2が選択状態になるだけでなく、位置も最前面に変更されてしまいます。
選択状態だから、というわけでもなく、ほかにカーソルを移したり、
単票フォーム、帳票フォームにしても、テキストボックス1の前面にテキストボックス2がある状態です。
順番が変わるトリガーになるのは、おそらく「Tabキー」でのカーソル移動だと思います。

Access2010で同じことを試しても勝手に入れ替わることはありませんでした。
また、365でも以前(1年前?)はこんな現象はなかったと思います。
テキストボックスだけではなく、チェックボックスの上にコマンドボタンを重ねたケースでも順番が変わりました。

ネットを探しても同じ現象の情報が見つからず、
私の環境だけこんなことが起きているのでしょうか?

勝手に順番がかわってしまうため、気づきにくく困っております。
お知恵を貸していただけないでしょうか。

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

kio
作成: 2025/01/08 (水) 18:57:24
通報 ...
1

以下、再現手順です。

当方の365環境で同じ手順を試してみたら、同じ現象が再現しました。

マウスやプロパティシートからの選択では現象は発生しないので、やはりTABキーによる移動がトリガーのようです。

バグのような気がしますので、サポートに問い合わせてみてはどうでしょう。

早急な対策が必要なら、以前の365では正常動作していたのなら下記の方法で以前のバージョンに戻してとりあえずの対応とすることになるでしょう。

Office 365(2016)をロールバックする - Microsoft コミュニティ

2

ご返信ありがとうございます。

やはりバグでしょうか。フィードバックしてみたいと思います。

ちなみに、Accessにはコントロールの前面、背面の順番(Zorder?)は存在しないのでしょうか?
VBAで強制的に設定できればと考えたのですが、それらしきプロパティが見つかりませんでした。

後ほど、ロールバックも試してみたいと思います。

3

ちなみに、Accessにはコントロールの前面、背面の順番(Zorder?)は存在しないのでしょうか?

ないみたいですね。

VBAで強制的に前後を入れ替えるには、下記のコマンドを実行すれば可能ですが、デザインビューで実行する必要があり面倒ですね。

DoCmd.RunCommand acCmdSendToBack '最背面に移動
DoCmd.RunCommand acCmdBringToFront '最前面に移動

フォーム1のテキストボックス2を最背面に配置するコード例

DoCmd.OpenForm "フォーム1", acDesign
Forms!フォーム1.テキストボックス2.InSelection = True
DoCmd.RunCommand acCmdSendToBack
Forms!フォーム1.テキストボックス2.InSelection = False

デザインビューではMeは使えない。
コントロールを選択するには、InSelection = True とする。

4

コードまでご教授いただき、ありがとうございます。
また、2022年頃のバージョンにロールバックしたところ、上記のバグも発生しませんでした。

今回の件をマイクロソフトにフィードバックしましたが、
解決までは時間がかかる可能性が高いので、
ロールバックしたまま使うか、こちらのコードで適宜前後を指定したいと思います。

ご助力いただき、ありがとうございました。