21 テキストボックスの名前を連番にする

フォーム上のコントロール(Controlオブジェクト)の”名前”はその「Name」プロパティで取得・設定することができます。

その名前を変更して、ある形式の連番にしたい場合には、あらかじめそのカウンタを示す変数を用意しておき、該当するコントロールごとに+1ずつしながらNameプロパティ値を書き換えていきます。

次のプログラムでは、フォームのControlsコレクションからControlオブジェクトをループで取り出します。そのコントロールがテキストボックス(ControlTypeプロパティが組み込み定数acTextBox)なら、「txt + カウンタ値」の形式にNameプロパティを変更するとともに、そのカウンタ値をインクリメントします。
  • For Each〜のコレクションのループでは、必ずしもフォームの左上から順番にControlが取り出されるとは限りません。デザイン作業において配置されたコントロールの順番などによって変わります。正確には何らかの方法でソートする必要があります。
プログラム

Sub SampleCode_21()
'テキストボックスの名前を連番にする

  Dim ctl As Control
  Dim intCtlNo As Integer

  '連番の初期値を設定
  intCtlNo = 1

  'アクティブフォームのすべてのコントロールのループ
  For Each ctl In Screen.ActiveForm.Controls
    With ctl
      If .ControlType = acTextBox Then
        'テキストボックスなら名前を連番に設定
        .Name = "txt" & intCtlNo
        '連番をインクリメント
        intCtlNo = intCtlNo + 1
      End If
    End With
  Next ctl

End Sub

実行例
■実行前


■実行後

| Index | Prev | Next |



Copyright © T'sWare All rights reserved