フォーム上にテキストボックスと、それに結び付いたラベルがあります。
テキストボックスの名前は「テキスト0」、ラベルの名前は「ラベル1」とします。
このときテキストボックスのプロパティを開くと「ラベル名」の値が「ラベル1」となっています。
これによって2つのコントロールの対応付けがされており、この値を別のラベルの名前に変えると、その名前を持つラベルに対応付けが切り替えられます。
さて、この「ラベル名」プロパティの値ですが、どうすれば取得できるでしょうか?
VBAのインテリセンスや公式のオブジェクトモデル解説を見てもそれらしいものが存在しません。
実はそのようなプロパティは存在しません;-o-)
その代わりにContrlosコレクションを用いて「Controls(0)」によりラベルコントロールそのものを取得できます。よってラベルコントロールの名前はControls(0).Nameで取得できます。ここでは以下のようなコードにより、テキストボックスをクリックしたときにラベルの名前(Controls(0).Name)と標題(Controls(0).Caption)を表示させるものとします。
Option Compare Database Private Sub テキスト0_Click() MsgBox Me.テキスト0.Controls(0).Name & " " & Me.テキスト0.Controls(0).Caption End Sub
Controlsは、フォームに含まれるコントロールやオプショングループに含まれるコントロールを取得する際に用いるものと同じものです。
フォームやオプショングループの場合はそこに含まれるコントロールがいくつもありますが、テキストボックス(あるいはチェックボックスなど)に結び付けられるコントロールは高々1つ、つまりラベルのみであるため、Controls(0)によりラベルのプロパティが取得できるというわけです。
テキストボックスをクリックしたところ、ラベルの名前と標題が表示されました。