教えて!ExcelVBA!

ExcelVBAの基礎知識・書き方について紹介します。

【ExcelVBA フォーム&コントロール】テキストボックスとセルを連動させる方法を教えて!

構文

構文は以下の通りです。

テキストボックス名.ControlSource = 連動させるセル

解説

ControlSourceプロパティは、テキストボックスが関連付けられるデータソースを指定します。連動させるセルには、テキストボックスが連動する対象のセルを指定します。通常、セルはワークシート上のセルを指定し、セルのアドレス(例:A1、B2など)で表現されます。セルの値をテキストボックスに表示したり、テキストボックスの内容をセルに反映させたりするために使用されます。

使い方

具体的な使い方を紹介します。

Private Sub TextBox1_Change()
    ' テキストボックスの値をセルA1に反映
    TextBox1.ControlSource = "A1"
End Sub

この例では、TextBox1の値が変更されるたびに、それがセルA1に反映されるようになります。

プログラミング例

以下に、プログラミング例を紹介します。

1. 複数のテキストボックスをセルに連動させる

Private Sub TextBox1_Change()
    ' TextBox1の値をセルA1に反映
    TextBox1.ControlSource = "A1"
End Sub

Private Sub TextBox2_Change()
    ' TextBox2の値をセルB1に反映
    TextBox2.ControlSource = "B1"
End Sub

この例では、TextBox1の値がセルA1に、TextBox2の値がセルB1にそれぞれ連動します。各テキストボックスごとにChangeイベントを利用しています。

2. 日付の入力と曜日の表示

Private Sub TextBox4_Change()
    ' TextBox4の値をセルD1に反映
    TextBox4.ControlSource = "D1"
    ' セルD1に入力された日付の曜日をセルE1に反映
    Range("E1").Value = Format(Range("D1").Value, "dddd")
End Sub

この例では、TextBox4に入力された日付をセルD1に反映し、その日の曜日をセルE1に表示します。Format関数を使って曜日を取得しています。

まとめ

テキストボックスとセルを連動させる事で、データ入力やフォーム作成を効率化する際に非常に便利です。是非活用してください。