Excel VBAでデータを扱う中で、「文字列が入力されているセルだけを対象に処理したい」という場面は少なくありません。たとえば、数値は無視して、テキストのみを太字にする・色を変えるといったニーズに対応するには、SpecialCells
メソッドを活用すると効率的です。
本記事では、文字列(テキスト)が入力されているセル範囲だけを取得し、フォントを太字にする例を中心に、実践的なコードとあわせて解説いたします。
目次
コード:文字列が入力されているセルを太字にする
Dim textRange As Range
On Error Resume Next
Set textRange = Cells.SpecialCells(Type:=xlCellTypeConstants, Value:=xlTextValues)
On Error GoTo 0
If textRange Is Nothing Then
MsgBox "文字列が入力されているセルはありません"
Else
textRange.Font.Bold = True
End If
コードの解説
1. SpecialCells
とは?
SpecialCells
メソッドは、特定の条件に一致するセルだけを抽出する便利な機能です。
Type:=xlCellTypeConstants
→ 入力された「定数セル」(数式ではない値)を対象とします。Value:=xlTextValues
→ 定数セルのうち「文字列(テキスト)」が入力されているセルを抽出します。
2. エラー処理について
- 該当するセルが1つも存在しない場合、
SpecialCells
はエラーになります。 - そのため、
On Error Resume Next
で一時的にエラー処理を無効化し、後でIf textRange Is Nothing
によって存在有無を確認しています。
3. フォントの変更
取得された文字列セル範囲に対して textRange.Font.Bold = True
を実行することで、文字列だけを太字にすることができます。
実行前後の例
実行前のセル内容:
A列 | B列 | C列 |
---|---|---|
123 | Apple | =A1+1 |
Orange | 456 | Banana |
実行後の状態:
- セル B1, A2, C2 の文字列セルのみが太字になります。
- 数値(123、456)や数式(=A1+1)は対象外です。
応用:文字列セルだけを削除・背景色変更なども可能
textRange
に対して以下のような処理も可能です。
textRange.ClearContents ' 文字列セルの値を消去
textRange.Interior.Color = vbYellow ' 背景色を黄色に変更
必要に応じて、色やフォント、罫線などさまざまな操作を限定的に行えるのが特長です。
まとめ
処理内容 | コード例 | 補足 |
---|---|---|
文字列セルの取得 | Cells.SpecialCells(Type:=xlCellTypeConstants, Value:=xlTextValues) | 定数かつ文字列のみ対象 |
存在チェック | If textRange Is Nothing Then | エラー対策に必須 |
フォントを太字に | textRange.Font.Bold = True | 他の書式も同様に可能 |
文字列セルだけを効率的に処理することで、数値や数式を誤って変更するリスクを防げます。
表の中に混在するデータから、テキスト情報だけを対象に加工・装飾したい場面では、ぜひこの方法を活用してみてください。