このサイト・インストラクターのネタ帳のアクセスログを眺めていて、
「vba テキストボックスのデータを最下行の空白セルに追加したい」
という検索キーワードに気づきました。
Excelで(私にはその理由がわかりませんけれど)セルではなくテキストボックスに、やたら文字を入力する方がいらっしゃいます。
そんなテキストボックスに入力されている文字列を、セルに書き出すExcel マクロ・VBA(Visual Basic for Applications)のコードを探していた方による検索です。
テキストボックスの文字列をセルに書き出すサンプルマクロ
以下のマクロを実行すると、アクティブなワークシート上に存在するテキストボックスの文字列が、A列の下のほうに書き出されます。
Dim n As Long ' 文字列を書き出す行番号
n = Cells.SpecialCells(xlCellTypeLastCell).Row + 3
Dim shp As Shape
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
End Sub
サンプルマクロの解説
「最下行の空白セル」の「最下行」をどうとらえるかですが、ここでは[選択オプション]ダイアログ-[最後のセル]オプションで選択されるセルとしました。
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
最終更新日時:2022-08-04 15:45
Home » エクセルマクロ・Excel VBAの使い方 » 図形内文字列 » テキストボックスの文字列をセルに書き出すExcelマクロ