- ベストアンサー
1つのテキストボックス内の文章(文字列)の取得
エクセルで1つの(固定の)オートシェイプのテキストボックス内の文章(文字列)を取得する方法(VBA)を教えてください。 QNo.1551960「複数のテキストボックス内の文章の一括保存」の良回答を参考にして、テキストボックス(固定)が1つの場合を考えましたが分かりません。上記の回答の場合、ボックスを2つ以上選択しないとエラーになってしまいます。 また、上記の回答とは全く異なる記述でも構いません。よろしくお願いいたします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
こんにちは 勘違いならごめんなさい。 MsgBox ActiveSheet.TextBoxes("固定の名前").Text ですか?
その他の回答 (1)
- Wendy02
- ベストアンサー率57% (3570/6232)
こんにちは。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
お礼
回答ありがとうございました。誤解させてしまったようですみません。 ボックスが複数ある中で、ある固定のボックスだけを取得したい という意味でした。でも今後役立ちそうなので質問文中の回答と合わせて参考にさせていただきます。ありがとうございました。
お礼
回答ありがとうございました。加工するためにボックスの文字列を取得したかったのでmsgboxでという意味ではありませんでした。しかし aa = ActiveSheet.TextBoxes("固定の名前").Text というふうにして取得できましたのでこれで解決できました。 ありがとうございました。