Charactersで文字列中の一部の文字を加工する

vbacharactereyecatcha

エクセルVBA Characterプロパティについて説明します。
文字列の中の文字毎に書式設定や加工をすることが出来ます。
見栄えのする書面の作成にも有用です。

こんにちは、じゅんぱ店長(@junpa33)です。

セルに入力された文字列の加工や設定は「Fontプロパティ」が本道です。

けれども、

悩める君
悩める君

文字列の一部分の文字だけを加工・設定することは出来ますか?

じゅんぱ店長
じゅんぱ店長

やり方によってです!

Charactersプロパティを使えば可能になります。

文字列の一部を加工できるCharactersプロパティの書き方

vbacharactersp014

Charactersプロパティの構文

記述方法

オブジェクト.Characters (Start, Length)

Start

  •  省略可能です。
  •  Variant型で指定します。
  •  返す先頭文字を指定します。 この引数に 1 を指定するか、省略すると、このプロパティは先頭文字から始まる文字列範囲を返します。

Length

  •  省略可能です。
  •  Variant
  •  返す文字数を指定します。 この引数を省略すると、引数 Start により指定された文字より後にある、文字列の残りの部分を返します。

このCharacters構文により取得された値(Caractersオブジェクト)に対して、利用できるメソッドとプロパティがあります。

Charactersオブジェクトのメソッドとプロパティの使い方

vbacharactersp015

名称説明
メソッドDelete文字列中の一部の文字を削除する
Insert文字列中の一部の文字を置き換える。挿入する。
プロパティCaption文字列中の一部の文字を表示する。取り出す。
Count文字列の文字数を数える。
Text文字列中の一部の文字を置き換える。取り出す。
Font文字列中の一部の文字の書式設定をする。

Charactersオブジェクトのメソッド

Deleteメソッド

Charactersメソッドで取得したCharactersオブジェクトを削除します。

記述方法

オブジェクト.Characters (Start, Length).Delete

VBA
Sub charactersの利用1()
  Range("B3").Value = "大阪府東大阪市"
  Range("B3").Characters(4, 1).Delete
End Sub

「東」が削除されました。

コード実行前

vbacharacters001
矢印下001

コード実行後

vbacharacters002

Insertメソッド

Charactersメソッドで取得したCharactersオブジェクトの前に文字を挿入または置換えします。

記述方法

オブジェクト.Characters (Start, Length).Insert(“string”)

≪挿入する場合≫

Lengthを”0″にする

VBA
Sub charactersの利用2()
  Range("B3").Value = "JR横浜駅"
  Range("B3").Characters(3, 0).Insert ("新")
End Sub

「横」の前に「新」が挿入されます。

コード実行前

vbacharacters003
矢印下001

コード実行後

vbacharacters004

≪置換える場合≫

Lengthを”1″(1以上)にする

VBA
Sub charactersの利用3()
  Range("B3").Value = "JR横浜駅"
  Range("B3").Characters(3, 1).Insert ("新")
End Sub

「横」の代わりに「新」が置換えられます。

コード実行前

vbacharacters003
矢印下001

コード実行後

vbacharacters005

Charactersオブジェクトの主なプロパティ

Captionプロパティ

Charactersメソッドで取得したCharactersオブジェクトの文字列を表す文字列型 (String) の値を返します。

記述方法

オブジェクト.Characters (Start, Length).Caption

VBA
Sub charactersの利用4()
    Dim Word As String
        Range("B3").Value = "桃栗3年柿8年"
        Word = Range("B3").Characters(2, 1).Caption
        Range("B5").Value = Word
End Sub

取得した値「栗」を表示しました。

コード実行前

vbacharacters006
矢印下001

コード実行後

vbacharacters007

Countプロパティ

Charactersメソッドで取得したCharactersオブジェクトの文字数を長整数型 (Long) の値で返します。

記述方法

オブジェクト.Characters (Start, Length).Count

VBA
Sub charactersの利用5()
    Dim Wordc As String
        Range("B3").Value = "桃栗3年柿8年"
        Wordc = Range("B3").Characters.Count
        Range("B5").Value = Wordc
End Sub

文字数を「7」と返しました。

コード実行前

vbacharacters006
矢印下001

コード実行後

vbacharacters008

Textプロパティ

Charactersメソッドで取得したCharactersオブジェクトの文字列の表示や設定加工します。

≪表示する場合≫

記述方法

オブジェクト.Characters (Start, Length).Text

VBA
Sub charactersの利用6()
    Dim Wordt As String
        Range("B3").Value = "桃栗3年柿8年"
        Wordt = Range("B3").Characters(1, 4).Text
        Range("B5").Value = Wordt
End Sub

「桃栗3年」を表示しました。

コード実行前

vbacharacters006
矢印下001

コード実行後

vbacharacters009

≪設定変更する場合≫

記述方法

オブジェクト.Characters (Start, Length).Text = “string”

VBA
Sub charactersの利用7()
        Range("B3").Value = "桃栗3年柿8年"
        Range("B3").Characters(1, 4).Text = "柿8年"
End Sub

「桃栗3年」が「柿8年」に変更されました。

vbacharacters006
矢印下001
vbacharacters010

Fontプロパティ

Charactersメソッドで取得したCharactersオブジェクトの文字列からFontオブジェクトを取得します。

記述方法

オブジェクト.Characters (Start, Length).Font

Fontプロパティで文字列の書式設定を行います。

Fontプロパティについては詳しくはこちらを参考にしてください。

vbafontsyseyecatcha Fontプロパティで文字装飾操作をする
VBA
Sub charactersの利用8()
        Range("B3").Value = "桃栗3年柿8年"
        With Range("B3").Characters(1, 2).Font
            .Bold = True
            .ColorIndex = 46
        End With
End Sub

「桃栗」が太字でオレンジ色に変わりました。

コード実行前

vbacharacters006
矢印下001

コード実行後

vbacharacters011

Charactersプロパティで文字の加工と設定のまとめ

vbacharactersp016

「Character」を使えば、セル入力された文字列に「個性」を持たせることが出来ます。

たくさん準備されているプロパティでいろんな個性を作り出すことが出来ます。

けれども実際に、資料や帳票を作成する場合での、見栄えの良い資料作りとか、あるいは

入力された文字データの一部を修正することがあった場合を考えてみます。

実は、実際の仕事作業では、エクセルシート上でカーソルを動かして”チョイチョイ”と作業するだけでしょう。

その場その場の校正・校閲的な作成資料の見直しでは、その方が速そうです。

ですので、

「Character」の使い方としては、定型的な設定(装飾)で汎用的に使えるマクロとして、

VBAコードを組み立てることが必要だと考えます。

例えば、

とめ記事

ブログ記事によくある「タイトル」や「見出し」で、最初の1文字を大きくするVBAコードなど。

エクセルVBAを独習するのに参考書は欠かせません。 参考書選びは自分に合った「相棒」にできるものを選んでいきたいです。

vbastudyeyecatch2 エクセルVBAの独習でおすすめ参考書を7冊選ぶ。良書との出会いは大切です

今回の記事はここまでです。   最後までご覧いただき有難うございました。

エクセルVBA最速理解で必要な知識を集めよう!

エクセルVBA業務ツールで日常の業務改善を行いましょう。

<記事内容についての告知>VBAコードの記述記事においては、その記述には細心の注意をしたつもりですが、掲載のVBAコードは動作を保証するものではりません。 あくまでVBAの情報の一例として掲載しています。 掲載のVBAコードのご使用は、自己責任でご判断ください。 万一データ破損等の損害が発生しても当方では責任は負いません。