Excel VBAのControlSource プロパティについて
Excel VBAを用いてフォームコントロールやActiveXコントロールを制御する際に、ControlSourceプロパティは非常に便利なツールとなります。この記事ではControlSourceプロパティについて詳しく解説し、その使用方法をサンプルコードと共に示します。
ControlSource プロパティとは
ControlSourceプロパティは、コントロールの値を特定のセルにリンクするために使用されます。これにより、コントロールの値が変更されると、関連付けられたセルの値も自動的に更新されます。また、セルの値が変更されると、コントロールの値も更新されます。
ControlSource プロパティの使用方法
ControlSourceプロパティの基本的な使用方法は次のとおりです:
ActiveSheet.Shapes("ComboBox1").ControlFormat.ControlSource = "A1"
このコードは、ComboBox1の値をセル”A1″にリンクします。
サンプルコード1: ControlSource プロパティを設定する
Sub SetControlSource()
Dim shp As Shape
Set shp = ActiveSheet.Shapes.AddFormControl(xlDropDown, Left:=100, Top:=100, Width:=100, Height:=20)
shp.ControlFormat.ControlSource = "A1"
MsgBox "The control source of the form control has been set to cell A1."
End Sub
このサンプルコードでは、新しいフォームコントロール(ドロップダウンリスト)を作成し、そのControlSourceをセル”A1″に設定しています。
サンプルコード2: ControlSource プロパティを取得する
Sub GetControlSource()
Dim shp As Shape
Set shp = ActiveSheet.Shapes("Drop Down 1")
MsgBox "The control source of the form control is " & shp.ControlFormat.ControlSource & "."
End Sub
このサンプルコードでは、既存のフォームコントロール(ドロップダウンリスト)のControlSourceを取得し、メッセージボックスで表示しています。
これらのサンプルコードは、ControlSourceプロパティを使用してフォームコントロールの値を特定のセルにリンクする方法を示しています。この機能を使用すると、ユーザーがコントロールの値を変更すると、自動的に対応するセルの値も更新されます。これは、ユーザーの入力を直接スプレッドシートに反映させるための効率的な方法です。
サンプルコード3: 複数のコントロールとセルをリンクする
Sub LinkMultipleControls()
Dim i As Integer
Dim shp As Shape
For i = 1 To 5
Set shp = ActiveSheet.Shapes.AddFormControl(xlDropDown, Left:=100, Top:=i * 50, Width:=100, Height:=20)
shp.ControlFormat.ControlSource = "A" & i
Next i
MsgBox "Control sources of the form controls have been set to cells A1 to A5."
End Sub
このサンプルコードでは、5つの新しいフォームコントロール(ドロップダウンリスト)を作成し、それぞれをセル”A1″から”A5″にリンクしています。
サンプルコード4: ActiveXコントロールのControlSourceプロパティを設定する
Sub SetActiveXControlSource()
With ActiveSheet.OLEObjects.Add(ClassType:="Forms.ComboBox.1", Link:=False, DisplayAsIcon:=False, Left:=100, Top:=100, Width:=100, Height:=20)
.Name = "ComboBoxActiveX"
.Object.ControlSource = "B1"
End With
MsgBox "The control source of the ActiveX control has been set to cell B1."
End Sub
このサンプルコードでは、新しいActiveXコントロール(コンボボックス)を作成し、そのControlSourceをセル”B1″に設定しています。
ControlSourceプロパティを使用すると、ユーザーのインタラクションをスプレッドシートに直接反映させることができます。これは、ダイナミックなユーザーインターフェースを作成するための強力なツールです。