【VBA】文字列が入力されているセルだけを操作する方法|SpecialCellsの活用法

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列
123Apple=A1+1
Orange456Banana

実行後の状態:

  • セル 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他の書式も同様に可能

文字列セルだけを効率的に処理することで、数値や数式を誤って変更するリスクを防げます。
表の中に混在するデータから、テキスト情報だけを対象に加工・装飾したい場面では、ぜひこの方法を活用してみてください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次