Home » エクセルマクロ・Excel VBAの使い方 » Charactersオブジェクト » Characters.Insertを使ったExcelマクロ

対象:Excel2010, Excel2013, Windows版Excel2016

「エクセルvba characters() insert string」
といった検索キーワードによるアクセスに気づきました。

詳細は不明ですが、CharactersオブジェクトのInsertメソッドについて、

 Characters.Insertを使ったExcelマクロ

調べていた方による検索です。

[スポンサードリンク]

ですが実際には、Range.Charactersプロパティなどによって取得できるCharactersオブジェクトが、

 Characters.Insertを使ったExcelマクロ

どのようなものなのか理解し辛い、ということが課題なのではないかと、推測しています。

CharactersオブジェクトのInsertメソッドを使ったサンプルマクロ

以下のSubプロシージャの、Range.Charactersプロパティの引数を変えながら何度か実行してみると、ヒントが得られるでしょう。

Sub CharactersオブジェクトのInsertメソッドのサンプル()
 ActiveCell.Value = "イロハ"
 ActiveCell.Characters(Start:=1, Length:=0).Insert "★"
End Sub

サンプルマクロで試して欲しいこと

VBE(Visual Basic Editor)のショートカットキー[F8]を使った、ステップ実行を行うほうが、よりCharacters.InsertメソッドやCharactersオブジェクトの仕様がよく見えてくると思います。

まず、
  ActiveCell.Value = "イロハ"
が実行されると、下図のようにアクティブなセルに「イロハ」と入力されます。

 Characters.Insertを使ったExcelマクロ

つづく、
  ActiveCell.Characters(Start:=1, Length:=0).Insert "★"
が実行されると、下図のように1文字目の位置に「★」が挿入されます。

 Characters.Insertを使ったExcelマクロ

RangeオブジェクトのCharactersプロパティの、引数・Startに「1」、Lengthに「0」が指定されているので、
  ActiveCell.Characters(Start:=1, Length:=0).Insert "★"
1文字目の、0文字分の長さを持つCharactersオブジェクトが取得でき、そこにCharacters.Insertメソッドで「★」が挿入されたわけです。

Range.Charactersプロパティの引数・Startの役割

次に、
Range.Charactersプロパティの引数を、
  ActiveCell.Characters(Start:=2, Length:=0).Insert "★"
としてから、再度ステップ実行してみましょう。
下図のように2文字目に「★」が挿入されます。

 Characters.Insertを使ったExcelマクロ

Range.Charactersプロパティの、引数・Startに「2」、Lengthに「0」が指定されているので、2文字目の位置の、0文字分のCharactersオブジェクトが取得でき、そこにCharacters.Insertメソッドで「★」が挿入されたわけです。

更に、
Range.Charactersプロパティの引数を、
  ActiveCell.Characters(Start:=3, Length:=0).Insert "★"
としてから、もう一度ステップ実行して、3文字目に「★」が挿入されることを確認しましょう。

Range.Charactersプロパティの引数・Lengthの役割

つづいて、
Range.Charactersプロパティの引数・Lengthの役割を確認しましょう。
  ActiveCell.Characters(Start:=1, Length:=1).Insert "★"
と指定して実行すると、1文字目から1文字分の文字列「イ」を表すCharactersオブジェクトが取得されて、「★」がInsertされるので、

 Characters.Insertを使ったExcelマクロ

のように「イ」が「★」に上書きされた状態になります。

次に、
  ActiveCell.Characters(Start:=1, Length:=2).Insert "★"
と指定して実行すると、1文字目から2文字分の文字列「イロ」を表すCharactersオブジェクトが取得されて「★」がInsertされるので、

 Characters.Insertを使ったExcelマクロ

のように「イロ」が「★」に上書きされた状態になります。

Charactersプロパティの引数の意味を考えながら、こういったテストを繰り返すと、Charactersオブジェクトがイメージできるようになるでしょう。

Characters.Insertを使う必要があるのか

「エクセルvba characters() insert string」
という検索をなさった方は、CharactersオブジェクトのInsertメソッドを使ったコードをどこかでご覧になったはずですが、本当にCharacters.Insertを使う必要があるのかは、よく考えてみてください。

上述のようなテストをすれば、Charactersオブジェクトと、Characters.Insertメソッドの仕様を理解できますが、わかりやすいかというと、疑問が残るのではないでしょうか。

Characters.Textプロパティなどを使って文字列を取得して、VBAのReplace関数を使って文字列を置換することでも、Characters.Insertメソッドで行ったことを同じことはできるはずです。Characters.Insertメソッドを使う場合と比較すると、コードは数行ほど長くなるはずですが、Replace関数を使うほうが理解はしやすいと感じられるはずです。

Characters.Insertを使う必要があるのか、いま一度、考えてみてください。

[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » Charactersオブジェクト » Characters.Insertを使ったExcelマクロ

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

.