#563 | データシートの列幅をまとめて調整する方法 | フォーム、VBA | |
データシート形式で表示されているフォームでは、列全体(列名部分)を右クリックして表示されるショートカットメニューから[列の幅]を選択すると、「列の幅」ダイアログが表示されます。 このダイアログでその列幅を変更することができますが、次の4種類の設定方法が可能です。
ここで、VBAを使って上記のような操作を行ういくつかの例を紹介します。 次のようなフォームを作って、[実行]ボタンのクリック時イベントプロシージャにいくつかのパターンでプログラムを記述します。なお、「frm売上明細_sub」はデータシート形式であるサブフォームコントロールの名前、「cmd実行」がボタンの名前です。 例1:「商品名」の列幅を10論理cmに設定する Private Sub cmd実行_Click() Me!frm売上明細_sub!商品名.ColumnWidth = 10 * 567 End Sub 実行結果: コントロールの幅は通常は「Width/幅」プロパティを使って設定しますが、データシートビューでの列幅にはその値は反映されません。データシート上の幅には「ColumnWidth」プロパティを使います。 また、「ColumnWidth」プロパティをVBAから設定する場合は「twip」という単位を指定します。「1論理cmは567twip」ですので、上記はそれを掛け算しています。 例2:「商品名」の列を標準の幅(既定の幅)に設定する Private Sub cmd実行_Click() Me!frm売上明細_sub!商品名.ColumnWidth = -1 End Sub 実行結果: 既定の幅に設定するには、「ColumnWidthに-1を指定する」のがポイントです。 例3:すべての列を標準の幅(既定の幅)に設定する Private Sub cmd実行_Click() Dim ctl As Control For Each ctl In Me!frm売上明細_sub.Controls If ctl.ControlType <> acLabel Then ctl.ColumnWidth = -1 End If Next ctl End Sub 実行結果: クリック前 クリック後 ※サブフォームにはラベルコントロールも配置されているため、「If ctl.ControlType <> acLabel Then」という文でそれを除外しています。 例4:すべての列の幅を最適幅に自動調整する Private Sub cmd実行_Click() Dim ctl As Control For Each ctl In Me!frm売上明細_sub.Controls If ctl.ControlType <> acLabel Then ctl.ColumnWidth = -2 End If Next ctl End Sub 実行結果: クリック前 クリック後 最適幅に自動調整するには、「ColumnWidthに-2を指定する」のがポイントです。 |
|||
|
Copyright © T'sWare All rights reserved |