Home » エクセルマクロ・Excel VBAの使い方 » Shapeオブジェクト » テキストボックスの文字列をセルに書き出すExcelマクロ

テキストボックスの文字列をセルに書き出すExcelマクロ

対象:Excel2007, Excel2010, Excel2013, Windows版Excel2016

このサイト・インストラクターのネタ帳のアクセスログを眺めていて、
「vba テキストボックスのデータを最下行の空白セルに追加したい」
という検索キーワードに気づきました。

Excelで(私にはその理由がわかりませんけれど)セルではなくテキストボックスに、やたら文字を入力する方がいらっしゃいます。

そんなテキストボックスに入力されている文字列を、セルに書き出すExcel マクロ・VBA(Visual Basic for Applications)のコードを探していた方による検索です。

[スポンサードリンク]

テキストボックスの文字列をセルに書き出すサンプルマクロ

以下のマクロを実行すると、アクティブなワークシート上に存在するテキストボックスの文字列が、A列の下のほうに書き出されます。


Sub テキストボックスの文字列を書き出す()

 Dim shp As Shape
 Dim n As Long ' 文字列を書き出す行番号

 n = Cells.SpecialCells(xlCellTypeLastCell).Row + 3

 For Each shp In ActiveSheet.Shapes
  If shp.Type = msoTextBox Then
   Cells(n, "A").Value = _
     shp.TextFrame.Characters.Text
   n = n + 1
  End If
 Next shp

End Sub

サンプルマクロの解説

「最下行の空白セル」の「最下行」をどうとらえるかですが、ここでは[選択オプション]ダイアログ-[最後のセル]オプションで選択されるセルとしました。

テキストボックスの文字列をセルに書き出すExcelマクロ

RangeオブジェクトのSpecialCellsメソッドの引数に、定数・xlCellTypeLastCellを指定することで、最後のセルを表すRangeオブジェクトを取得して、その行番号に(その直下に書き出すより少し隙間があったほうがよさそうなのでとりあえず)「+3」した行以下に書き出すようにしています。
  n = Cells.SpecialCells(xlCellTypeLastCell).Row + 3

アクティブなシート上の全ShapeにFor Each~Nextループを回して、
  For Each shp In ActiveSheet.Shapes

テキストボックスだったときに、
   If shp.Type = msoTextBox Then

テキストボックスに入力されている文字列を書き出して、
    Cells(n, "A").Value = _
      shp.TextFrame.Characters.Text

書き出す行番号をインクリメントしています。
    n = n + 1

[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » Shapeオブジェクト » テキストボックスの文字列をセルに書き出すExcelマクロ

TrackBack:0

TrackBack URL

Home » エクセルマクロ・Excel VBAの使い方 » Shapeオブジェクト » テキストボックスの文字列をセルに書き出すExcelマクロ

「Shapeオブジェクト」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.