エクセルVBA Characterプロパティについて説明します。
文字列の中の文字毎に書式設定や加工をすることが出来ます。
見栄えのする書面の作成にも有用です。
こんにちは、じゅんぱ店長(@junpa33)です。
セルに入力された文字列の加工や設定は「Fontプロパティ」が本道です。
けれども、

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

やり方によってです!
Charactersプロパティを使えば可能になります。
コンテンツ
文字列の一部を加工できるCharactersプロパティの書き方

Charactersプロパティの構文
記述方法
オブジェクト.Characters (Start, Length)
Start
- 省略可能です。
- Variant型で指定します。
- 返す先頭文字を指定します。 この引数に 1 を指定するか、省略すると、このプロパティは先頭文字から始まる文字列範囲を返します。
Length
- 省略可能です。
- Variant
- 返す文字数を指定します。 この引数を省略すると、引数 Start により指定された文字より後にある、文字列の残りの部分を返します。
このCharacters構文により取得された値(Caractersオブジェクト)に対して、利用できるメソッドとプロパティがあります。
Charactersオブジェクトのメソッドとプロパティの使い方

名称 | 説明 | |
---|---|---|
メソッド | Delete | 文字列中の一部の文字を削除する |
Insert | 文字列中の一部の文字を置き換える。挿入する。 | |
プロパティ | Caption | 文字列中の一部の文字を表示する。取り出す。 |
Count | 文字列の文字数を数える。 | |
Text | 文字列中の一部の文字を置き換える。取り出す。 | |
Font | 文字列中の一部の文字の書式設定をする。 |
Charactersオブジェクトのメソッド
Charactersメソッドで取得したCharactersオブジェクトを削除します。
記述方法
オブジェクト.Characters (Start, Length).Delete
Sub charactersの利用1()
Range("B3").Value = "大阪府東大阪市"
Range("B3").Characters(4, 1).Delete
End Sub
「東」が削除されました。
コード実行前


コード実行後

Charactersメソッドで取得したCharactersオブジェクトの前に文字を挿入または置換えします。
記述方法
オブジェクト.Characters (Start, Length).Insert(“string”)
Lengthを”0″にする
Sub charactersの利用2()
Range("B3").Value = "JR横浜駅"
Range("B3").Characters(3, 0).Insert ("新")
End Sub
「横」の前に「新」が挿入されます。
コード実行前


コード実行後

Lengthを”1″(1以上)にする
Sub charactersの利用3()
Range("B3").Value = "JR横浜駅"
Range("B3").Characters(3, 1).Insert ("新")
End Sub
「横」の代わりに「新」が置換えられます。
コード実行前


コード実行後

Charactersオブジェクトの主なプロパティ
Charactersメソッドで取得したCharactersオブジェクトの文字列を表す文字列型 (String) の値を返します。
記述方法
オブジェクト.Characters (Start, Length).Caption
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
取得した値「栗」を表示しました。
コード実行前


コード実行後

Charactersメソッドで取得したCharactersオブジェクトの文字数を長整数型 (Long) の値で返します。
記述方法
オブジェクト.Characters (Start, Length).Count
Sub charactersの利用5()
Dim Wordc As String
Range("B3").Value = "桃栗3年柿8年"
Wordc = Range("B3").Characters.Count
Range("B5").Value = Wordc
End Sub
文字数を「7」と返しました。
コード実行前


コード実行後

Charactersメソッドで取得したCharactersオブジェクトの文字列の表示や設定加工します。
記述方法
オブジェクト.Characters (Start, Length).Text
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年」を表示しました。
コード実行前


コード実行後

記述方法
オブジェクト.Characters (Start, Length).Text = “string”
Sub charactersの利用7()
Range("B3").Value = "桃栗3年柿8年"
Range("B3").Characters(1, 4).Text = "柿8年"
End Sub
「桃栗3年」が「柿8年」に変更されました。



Charactersメソッドで取得したCharactersオブジェクトの文字列からFontオブジェクトを取得します。
記述方法
オブジェクト.Characters (Start, Length).Font
Fontプロパティで文字列の書式設定を行います。
Fontプロパティについては詳しくはこちらを参考にしてください。

Sub charactersの利用8()
Range("B3").Value = "桃栗3年柿8年"
With Range("B3").Characters(1, 2).Font
.Bold = True
.ColorIndex = 46
End With
End Sub
「桃栗」が太字でオレンジ色に変わりました。
コード実行前


コード実行後

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

「Character」を使えば、セル入力された文字列に「個性」を持たせることが出来ます。
たくさん準備されているプロパティでいろんな個性を作り出すことが出来ます。
けれども実際に、資料や帳票を作成する場合での、見栄えの良い資料作りとか、あるいは
入力された文字データの一部を修正することがあった場合を考えてみます。
実は、実際の仕事作業では、エクセルシート上でカーソルを動かして”チョイチョイ”と作業するだけでしょう。
その場その場の校正・校閲的な作成資料の見直しでは、その方が速そうです。
ですので、
「Character」の使い方としては、定型的な設定(装飾)で汎用的に使えるマクロとして、
VBAコードを組み立てることが必要だと考えます。
例えば、
まとめ記事
ブログ記事によくある「タイトル」や「見出し」で、最初の1文字を大きくするVBAコードなど。
エクセルVBAを独習するのに参考書は欠かせません。 参考書選びは自分に合った「相棒」にできるものを選んでいきたいです。

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