• ベストアンサー

1つのテキストボックス内の文章(文字列)の取得

エクセルで1つの(固定の)オートシェイプのテキストボックス内の文章(文字列)を取得する方法(VBA)を教えてください。 QNo.1551960「複数のテキストボックス内の文章の一括保存」の良回答を参考にして、テキストボックス(固定)が1つの場合を考えましたが分かりません。上記の回答の場合、ボックスを2つ以上選択しないとエラーになってしまいます。 また、上記の回答とは全く異なる記述でも構いません。よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
noname#31387
noname#31387
回答No.1

こんにちは 勘違いならごめんなさい。 MsgBox ActiveSheet.TextBoxes("固定の名前").Text ですか?

kazukinatti
質問者

お礼

回答ありがとうございました。加工するためにボックスの文字列を取得したかったのでmsgboxでという意味ではありませんでした。しかし aa = ActiveSheet.TextBoxes("固定の名前").Text というふうにして取得できましたのでこれで解決できました。 ありがとうございました。

その他の回答 (1)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんにちは。Wendy02です。 シートにテキストボックスが一つしかなければ、簡単なのです。 Sub getTextBoxText() Dim shp As Shape Dim buf As String    With ActiveSheet.Shapes(1)    If .Type = msoTextBox Then     buf = .DrawingObject.Text    End If   End With  If Len(buf) > 0 Then    MsgBox buf  End If End Sub ------------------------------------ 以下は、おまけ ------------------------------------ '以下はユーザー定義関数で、標準モジュールに置きます。 'ただし、変更あった場合は、F9 を押さないと、変化しません。 ワークシートに、 =GetTextbox() と入れますと、文字が出力されます。() の中は、1番目なら省略してよいです。(2) なら、二番目ということです。 Function GetTextbox(Optional i As Integer) As String Dim shp As Shape Dim buf As String   If i = 0 Then i = 1   With ActiveSheet.Shapes(i)    If .Type = msoTextBox Then     buf = .DrawingObject.Text    End If   End With  If Len(buf) > 0 Then    GetTextbox = buf  Else    GetTextbox = ""  End If End Function

kazukinatti
質問者

お礼

回答ありがとうございました。誤解させてしまったようですみません。 ボックスが複数ある中で、ある固定のボックスだけを取得したい という意味でした。でも今後役立ちそうなので質問文中の回答と合わせて参考にさせていただきます。ありがとうございました。

関連するQ&A