11 選択コントロールを関連するラベルに密着させる

テキストボックスやコンボボックスなど、入力や選択を行うコントロールと関連付けられたラベルコントロール(テキストボックスなどの標題表示用のラベル)は、テキストボックスなどの「ラベル名」プロパティ(VBAでは「LabelName」プロパティ)で取得・設定できます。

フォームのControlsコレクションからControlオブジェクトをループで取り出し、そのLabelNameプロパティの値を取得、さらにそこに記されたラベルのControlオブジェクトを参照することで、ラベルの各種プロパティも参照することができます。

そして、そのラベルの”右位置”を「Left + Width」のプロパティ値の加算で求め、テキストボックスなどの「Left/左位置」プロパティに設定することで、両者の間隙をゼロにして密着させることができます。
同様に、ラベルの「Top + Height」の値をテキストボックスなどの「Top/上位置」プロパティに設定すれば、上下の密着を行うこともできます。
  • LabelNameプロパティは「Control.LabelName」という表記では参照できません。「Control.Properties("LabelName")」のように書く必要があります。
  • またその際、関連付けられたラベルがないときはエラーが発生します。そこで次のプログラムではエラー処理を行い、「参照したときにエラーが発生していなければラベル名プロパティが設定されている」と判断しています。
プログラム

Sub SampleCode_11()
'選択コントロールを関連するラベルに密着させる

  Dim ctl As Control
  Dim strLableName As String
  Dim lbl As Label

  'アクティブフォームのすべてのコントロールのループ
  For Each ctl In Screen.ActiveForm.Controls
    With ctl
      If .InSelection Then
        'コントロールが選択されているとき
        On Error Resume Next
        'ラベル名プロパティの値を取得
        strLableName = .Properties("LabelName")
        If Err.Number = 0 Then
          'エラーが発生していない(=ラベル名プロパティがある)とき
          'そのコントロールの左位置をラベルの右端に合わせる
          Set lbl = Screen.ActiveForm.Controls(strLableName)
          .Left = lbl.Left + lbl.Width
        End If
      End If
    End With
  Next ctl

End Sub

実行例
■実行前

■実行後
| Index | Prev | Next |



Copyright © T'sWare All rights reserved