MS Access Tips/Sample and VBA and Blog customize etc...

AC2010以降、「間隔を均等にする」が動作しない

タブコントロール上に複数のコントロールを配置して、複数選択して[配置]-[サイズ間隔]-[上下の間隔を均等にする]をクリックしても、動作しない、という不具合が報告されていました。

当方の環境でも症状が再現しました。「左右の間隔を均等にする」や「間隔を狭くする」「間隔を広くする」など間隔を調整するコマンドは全滅です。オプショングループ上に配置したコントロールも同じ症状です。

他のバージョンで確認してみるとAccess2003、2007では動作しました。Access2010、2013では動作しませんでした。2010から持ち込まれた不具合のようです。

参照リンク
Excel VBA を学ぶなら moug モーグ|Access (一般機能)|配置→サイズ間隔→上下の間隔を均等にする

BUG?「間隔を均等にする」が動作しない

難易度:

概要

現在、2003で開発したシステムを2013へ移行中なんですが、タブコントロールに大量のコントロールを配置したフォームがあるのでこの不具合は深刻です。

そこで対策として間隔を均等にする関数を作成することにしました。以前に下記でデザインビューでのレイアウトを変更するものを作成したのでその応用で簡単にできるだろうと思って作成しはじめましたが、結構たいへんでした。

ラベルとコントロールの関連付けを解除する関数 - hatena chips

で作成してみて動作確認してみると、うまく動作はしたのですが、デザインビューでVBAでプロパティを変更すると、記録されていたアンドゥ履歴がすべてキャンセルされるという現象に気が付きました。そういう仕様らしいです。

仕方ないので、位置を元に戻す関数も作成しました。

標準モジュール

標準モジュールを新規作成して、下記のコードをコピーして貼り付けます。このモジュールを mdlSpaceEvenly と名前を付けて保存します。

ショートカットキーに登録

  1. リボンの[作成]-[マクロ]をクリックします。
  2. 新しいアクションの追加]に「プロシージャの実行」と設定します。
  3. [プロシージャ名]に「SpaceEvenly(-1)」と設定します。
  4. 右クリックして、[サブマクロ ブロックの作成]をクリックします。サブマクロ: に「{F8}」と設定します。
  5. 新しいアクションの追加]に「プロシージャの実行」と設定します。
  6. [プロシージャ名]に「SpaceEvenly(0)」と設定します。
  7. 右クリックして、[サブマクロ ブロックの作成]をクリックします。サブマクロ: に「{F9}」と設定します。
  8. 新しいアクションの追加]に「プロシージャの実行」と設定します。
  9. [プロシージャ名]に「UndoPos()」と設定します。
  10. 右クリックして、[サブマクロ ブロックの作成]をクリックします。サブマクロ: に「{F12}」と設定します。
  11. マクロを保存します。名前は AutoKeys とします。

AutoKeysマクロ

これでフォーム、レポートのデザインビュー、レイアウトビューで、複数のコントロールを選択して、F8キーを押すと左右の間隔が均等になります。F9キーを押すと上下の間隔が均等になります。その後、F12 キーを押すと元の位置に戻ります。元の位置に戻るのは一回のみです。

「左右の間隔を広くする」コマンドも使いたい場合は、上記のプロシージャ名を、「SpaceEvenly(-1,58)」と設定すると、等間隔にしてかつ約1mm広くなります。
狭くしたい場合は、「SpaceEvenly(-1,-58)」というように設定してください。上下の間隔も同様に設定してください。

別のショートカットキーに割り当てたい場合は、下記の「AutoKeys キーボード ショートカットの構文」のトピックを参照してください。

キーボード ショートカットを使用して Access マクロを実行する - Access - Office.com

また、この関数で間隔を調整した場合は、アンドゥ履歴はすべて破棄されます。ですので、タブコントロール上、またはオプショングループ上のコントロールの位置を調整するとき以外は、標準のコマンドを利用したほうがいいでしょう。

リボンにコマンドを配置する

Access2010以降ですので、リボンのユーザー設定が可能ですので、それでリボン上にコマンドを配置してもいいでしょう。

  1. リボン上の右クリックメニューで[リボンのユーザー設定]をクリック
  2. 右上のドロップダウンリストから「ツールのタプ」を選択
  3. その下のリストから[フォームデザインツール]の[配置]を選択します。
  4. その下の[新しいグループ]をクリックします。
  5. 「新しいグループ(ユーザー設定)」が追加されるのでそれを選択します。
  6. [名前の変更]をクリックして「間隔」と設定してOKをクリックします。
  7. 左上の「コマンドの選択」ドロップダウンリストからマクロを選択します。
  8. 「AutoKeys.{F8}」を選択して、[追加]ボタンをクリックします。同様に、「AutoKeys.{F9}」「AutoKeys.{F12}」も追加します。
  9. 右のリストの「AutoKeys.{F8}」を選択して[名前の変更]をクリックして「左右の間隔を均等に」と設定して、お好みのアイコンを選択します。
  10. 同様に、「AutoKeys.{F9}」「AutoKeys.{F12}」も名前とアイコンを変更します。

リボンのユーザー設定

リボンのユーザー設定-名前の変更

これで、フォームのデザインビューのりボンにユーザー設定のコマンドが表示されます。
「フォームのレイアウトツール」「レポートのデザインツール」「レポートのレイアウトツール」にも同様にコマンドを追加します。

サンプルファイルからインポートする

上記の設定が面倒だという場合は、サンプルファイルからインポートする方法があります。

  1. 下記のサンプルファイルのリンクをクリックしてダウンロードします。
  2. ZIPファイル内の2つのファイル(SpaceEvenly.accdb, Access Customizations.exportedUI)をデスクトップなど適当な場所にコピーします。
  3. インポートしたいデータベースファイルを開いて、SpaceEvenly.accdb から、マクロ AutoKeys、モジュール mdlSpaceEvenly をインポートします。
  4. リボンを右クリックして[リボンのユーザー設定]をクリックして[インポート/エクスポート]ボタンをクリックして[ユーザー設定ファイルをインポート]をクリックします。
  5. Access Customizations.exportedUI ファイルを選択してOKを押します。

以上です。ただし、既に、クイックアクセスボタンツールバーやリボンをユーザー設定で変更している場合は、上書きされてしまいますので、[ユーザー設定ファイルをインポート]は実行せずに、手作業で変更してください。

サンプルファイルが下記からダウンロードできます。
SpaceEvenly_07.zip (Access 2007-2013 形式 - 24kb)

拍手する

Leave a reply






Trackbacks

trackback URL
http://hatenachips.blog34.fc2.com/tb.php/408-b98f0811
該当の記事は見つかりませんでした。