
図形のテキストボックスの値を取得する方法
エクセルでよく使用される図形のテキストボックスの値を取得する方法を解説します。

まずは図形のテキストボックスを配置し、テキストボックスの名前を分かりやすい名前に変更します。

次にVBAのコードを記入していきます。
まず、テキストボックスの名前(上記画像ではTEST_TEXTと指定しています)から図形を取得します。そのあとに、「.TextFrame2.TextRange.Text」でテキストボックスの値を取得する流れになります。
下記のサンプルコードを参考にしてください。
サンプルコード
Sub テキストボックス値取得()
Dim ws As Worksheet
Dim shp As Shape
Dim getText As String
'テキストボックスが配置されているシートを指定します
Set ws = ThisWorkbook.Worksheets("Sheet1")
'テキストボックスに付けた名前からテキストボックスを指定します
Set shp = ws.Shapes("TEST_TEXT")
'テキストボックスの値を取得します
getText = shp.TextFrame2.TextRange.Text
'取得した値をメッセージボックスで表示
MsgBox "テキストボックスの値:" & getText
'リソースの解放を行います
Set ws = Nothing
Set shp = Nothing
End Sub
上記のコードを実行することで、テキストボックスの値を取得することが出来ました。

ActiveXコントロールのテキストボックスの値を取得する方法

ActiveXコントロールのテキストボックスとは上記画像のようなコントロールのテキストボックスのことです。実際にユーザーに値を入力してもらう場合などに使用します。
ActiveXコントロールを使用するには開発タブを表示させておく必要があります。開発タブの表示のさせ方についてはこちらの「開発タブを表示する」を参考にしてください。
開発タブが表示されたら、ActiveXのテキストボックスをシートに配置していきます。挿入する順序としては「開発」⇒「挿入」⇒「ActiveXコントロールのテキストボックス」の順番でクリックしていきます。

ActiveXコントロールのテキストボックスをクリックするとカーソルが+になりますので、図形を挿入するときと同様にお好みの位置にテキストボックスを配置してください。
テキストボックスの配置が完了しましたら、開発タブの左にある「VisualBasic」をクリックし、VBE(VisualBasicEditor)を開きます。
VBE(VisualBasicEditor)を開いた後に、エクセルのシートとVBEが両方見えるようにして、設置したテキストボックスを選択します。

テキストボックスのオブジェクト名を分かりやすい名前に変更します。

オブジェクト名の変更を終えたら、デザインモードを解除します。
デザインモードを解除するとユーザーがテキストボックスに値を入力できるようになります。
再度テキストボックスの大きさを変更する場合は、再度デザインモードをクリックして有効にします。

次に、配置したテキストボックスの値を取得するVBAコードを作成します。
まず、OLEObjectsコレクションに、テキストボックスに割り当てた名前(当記事では「TEST_TEXT」としています)を指定します。
その後、指定したOLEObjectから「.Object.Value」を使うことで、テキストボックスの値を取得できます。
下記が、ActiveXコントロールのテキストボックスの値を取得するサンプルコードです。
サンプルコード
Sub ActiveXコントロールテキストボックス値取得()
Dim ws As Worksheet
Dim ActiveXText As OLEObject
Dim getText As String
'テキストボックスが配置されているシートを指定します
Set ws = ThisWorkbook.Worksheets("Sheet1")
'テキストボックスに付けた名前からテキストボックスを指定します
Set ActiveXText = ws.OLEObjects("TEST_TEXT")
'テキストボックスの値を取得します
getText = ActiveXText.Object.Value
'取得した値をメッセージボックスで表示
MsgBox "テキストボックスの値:" & getText
'リソースの解放を行います
Set ws = Nothing
Set ActiveXText = Nothing
End Sub
上記のコードを実行することでテキストボックスに入力された値を取得することが出来ました。
