Excel/VBA

TOP

テキストボックスの値を取得する方法

図形・ActiveXコントロールそれぞれのテキストボックスの値を取得する方法の説明画像です

図形のテキストボックスの値を取得する方法

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

図形・ActiveXコントロールそれぞれのテキストボックスの値を取得する方法の説明画像です

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

図形・ActiveXコントロールそれぞれのテキストボックスの値を取得する方法の説明画像です

次に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のテキストボックスをシートに配置していきます。挿入する順序としては「開発」⇒「挿入」⇒「ActiveXコントロールのテキストボックス」の順番でクリックしていきます。

図形・ActiveXコントロールそれぞれのテキストボックスの値を取得する方法の説明画像です

ActiveXコントロールのテキストボックスをクリックするとカーソルが+になりますので、図形を挿入するときと同様にお好みの位置にテキストボックスを配置してください。

テキストボックスの配置が完了しましたら、開発タブの左にある「VisualBasic」をクリックし、VBE(VisualBasicEditor)を開きます。


VBE(VisualBasicEditor)を開いた後に、エクセルのシートとVBEが両方見えるようにして、設置したテキストボックスを選択します。

図形・ActiveXコントロールそれぞれのテキストボックスの値を取得する方法の説明画像です

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

図形・ActiveXコントロールそれぞれのテキストボックスの値を取得する方法の説明画像です

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

図形・ActiveXコントロールそれぞれのテキストボックスの値を取得する方法の説明画像です

次に、配置したテキストボックスの値を取得する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
        

上記のコードを実行することでテキストボックスに入力された値を取得することが出来ました。

図形・ActiveXコントロールそれぞれのテキストボックスの値を取得する方法の説明画像です

関連記事