Home » エクセルマクロ・Excel VBAの使い方 » Shapeオブジェクト » VBAでテキストボックス内の文字列を削除-Characters.Text・TextRange2.Text

VBAでテキストボックス内の文字列を削除-Characters.Text・TextRange2.Text

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

「excel vba テキストボックス内 一括消去」
「エクセルvba テキストボックスを空にする」
といった検索で、このサイト・インストラクターのネタ帳へのアクセスがあることに気づきました。

Excel VBAを使って、テキストボックス自体は残して、

VBAでテキストボックス内の文字列を削除する

テキストボックス内の文字列を削除するには、どのようなコードを書けばいいのかを探していた方による検索キーワードでしょうか。

2007以降のExcelでは、テキストボックスなどのShape内の文字列を取得するオブジェクトモデルは、大きく分類すると2つ存在しています。

CharactersオブジェクトのTextプロパティを使う方法と、

VBAでテキストボックス内の文字列を削除する

TextRange2オブジェクトのTextプロパティを使う方法です。

VBAでテキストボックス内の文字列を削除する

ここでは参考になりそうなマクロを、それぞれご紹介しておきます。

[スポンサードリンク]

Charactersオブジェクトを利用してテキストボックス内の文字列を削除するサンプルマクロ

一つ目はCharactersオブジェクトのTextプロパティを利用して、テキストボックス内の文字列を削除するマクロです。


Sub テキストボックスの文字列を削除する_Characters_Text()
 Dim shp As Shape

 For Each shp In ActiveSheet.Shapes
  If shp.Type = msoTextBox Then
   shp.TextFrame.Characters.Text = ""
  End If
 Next shp
End Sub

上記のマクロを実行すると、アクティブなシート上のテキストボックスの文字列が削除されます。

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

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

文字列を削除しています。
   shp.TextFrame.Characters.Text = ""

TextFrameオブジェクトのCharactersメソッドで、Charactersオブジェクトを取得して、

VBAでテキストボックス内の文字列を削除する

CharactersオブジェクトのTextプロパティに空白文字列を設定することで、

VBAでテキストボックス内の文字列を削除する

文字列を削除しています。(ちなみにCharactersオブジェクトは、複数形の単語がオブジェクト名となっているだけで、コレクションではありません。)

TextRange2オブジェクトを利用してテキストボックス内の文字列を削除するサンプルマクロ

二つ目はTextRange2オブジェクトのTextプロパティを利用して、テキストボックス内の文字列を削除するマクロです。


Sub テキストボックスの文字列を削除する_TextRange2_Text()
 Dim shp As Shape
 
 For Each shp In ActiveSheet.Shapes
  If shp.Type = msoTextBox Then
   shp.TextFrame2.TextRange.Text = ""
  End If
 Next shp
End Sub

マクロ全体の作りは、先ほどのCharactersオブジェクトを利用したマクロと同じですが、文字列を削除するオブジェクト式が、
   shp.TextFrame2.TextRange.Text = ""
と、異なっています。

TextFrame2オブジェクトのTextRangeプロパティで、TextRange2オブジェクトを取得して、

VBAでテキストボックス内の文字列を削除する

TextRange2オブジェクトのTextプロパティに空白文字列を設定することで、

VBAでテキストボックス内の文字列を削除する

文字列を削除しています。

TextFrame2オブジェクトの、TextRangeプロパティTextRange2オブジェクトを取得する部分が、オブジェクト式的にはネックでしょう。

プロパティの名前と返されるオブジェクトの名前が、似ているけれど違うのが、オブジェクトモデルが理解できていない方にとって厄介なはずです。

この部分は、自分の手でオブジェクトブラウザーを確認したり、オブジェクトの階層関係図を自分で書くことを繰り返したりして、理解するしかありません。(もしも、もっと簡単に納得できる方法があるのならば、私が教えてほしいくらいです。)

[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » Shapeオブジェクト » VBAでテキストボックス内の文字列を削除-Characters.Text・TextRange2.Text

TrackBack:2

TrackBack URL
Characters.Delete・TextFrame2.DeleteTextでテキストボックスの文字列を削除する from インストラクターのネタ帳
Characters.Deleteメソッド・TextFrame2.DeleteTextメソッドで、アクティブシート上テキストボックスの文字列を削除するEx...
特定形状の図形からテキストを削除するExcelマクロ from インストラクターのネタ帳
指定した形状の図形からテキストを削除するExcelマクロをご紹介しています。

Home » エクセルマクロ・Excel VBAの使い方 » Shapeオブジェクト » VBAでテキストボックス内の文字列を削除-Characters.Text・TextRange2.Text

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

検索


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

.