#628 データシートの書式を動的に設定するには? フォーム、VBA

フォームのデータシートの書式はリボンの操作で簡単に設定変更できますが、プロパティシートにはその設定項目は表示されません。したがって、動的かつ意図的にそれを変更するには、VBA用の独自のプロパティをプログラムを使って設定変更する必要があります。

データシートの書式にはいろいろなプロパティがありますが、ここではその例として「DatasheetFontName/フォント名」、「DatasheetFontHeight/フォントサイズ」および各列の「ColumnWidth/列幅」プロパティを設定する例を紹介します。

「動的に設定」というタイトルにしていますが、アプリケーションの機能としてはあまり使うことはないかもしれません。実際には、たくさんのデータシート形式のフォームのデザインを一気に変更したいような開発時の作業の方が使えるかもしれません。


まずここでは、次のようなデザインのフォームを作ります。
  • データシートの書式設定は「cmd書式設定」という名前のコマンドボタンのクリックで行うようにします。
  • サブフォームは「frm商品マスタ_sub」という名前とします。
  • そして「cmd書式設定」ボタンのクリック時イベントプロシージャを次のように記述します。

Private Sub cmd書式設定_Click()

  Dim ctl As Control

  With Me!frm商品マスタ_sub
    With .Form
      'フォント名の設定
      .DatasheetFontName = "Meiryo UI"
      'フォントサイズの設定
      .DatasheetFontHeight = 10
    End With

    'すべての列を最適幅に自動調整
    For Each ctl In .Controls
      ctl.ColumnWidth = -2
    Next ctl

  End With

  '変更を保存することで閉じるときに確認メッセージを表示させない
  DoCmd.RunCommand acCmdSave

End Sub


実行例:
■実行前(事前にリボンから書式を設定)


■実行後



※上記プログラムでは各種変更後に意図的にフォームを保存しています。今回設定変更したプロパティについては問題ありませんが、デザインに関する一部の要素はプログラムから動的に変更した場合でもフォームを閉じる際に保存確認のメッセージが表示されます。

これを抑止するためにこの1行のコードを実行しています。Docmd.Closeメソッドの引数として上書きするように指定することもできますが、もしフォームのタブやウィンドウが直接閉じられたときには処理できないのでここで実行しています。
| Index | Prev | Next |



T'sFactory
Accessで動く生産管理DB
Ureru Express
Webで使う販売顧客管理
Access開発&アドバイス
DB開発やテクニカルアドバイス
Copyright © T'sWare All rights reserved