Larryは、いくつかのExcelワークブックの列の各セルにテキストを置き換えたり追加したりする任務を負っています。問題は、この新しいテキストに下線を引き、別の色にする必要があることです。検索して置換すると、セル内のすべてのテキストに下線が引かれ、色が付けられますが、ラリーは追加されたテキストだけに適用するための書式設定が必要です。

この種のタスクを数回実行するだけでよい場合、最も簡単な解決策はMicrosoftWordの助けを借りることかもしれません。セルの範囲をWord文書にコピーし、Wordの検索および置換機能を使用して書式を変更してから、テキストをExcelワークシートにコピーして戻すことができます。

このタスクをより頻繁に実行する必要がある場合は、マクロを使用するのが最善の方法です。次のマクロを使用して、列のセルのテキストを変更したり、セルにテキストを追加したりできます。

Sub AddFormatedText()

Dim K As Long     Dim lCol As Long     Dim LastRow As Long     Dim sFind As String     Dim sReplace As String     Dim FullCells As Range     Dim c As Range

' Column to work on     lCol = 1

' Text to be replaced in the cell     ' If this variable is empty, then     ' the contents of sReplace are added     ' to the end of the cell     sFind = ""



' Text to replace sFind or to add to the cell     sReplace = "More Text"



' Find last row in column A     LastRow = Cells(Rows.Count, "A").End(xlUp).Row

' Set range to check     Set FullCells = Range(Cells(1, lCol), Cells(LastRow, lCol))

' Start looking through each cell     For Each c In FullCells         K = 0         ' Only check if there is not a formula in the cell         ' and if the cell has some text in it         If Not c.HasFormula And Len(c.Text) > 0 Then             If sFind > "" Then                 ' Replace first found instance of text in sFind                 K = InStr(c.Text, sFind)

If K > 0 Then                     c = Left(c.Text, K - 1) & sReplace & _                       Mid(c.Text, K + Len(sFind))

End If             Else                 K = Len(c.Text)

' Add the text to the cell (plus a space)

c = c & " " & sReplace                 ' Adjust starting position for formatting                 K = K + 2             End If         End If

' Format the added text, if any         If K > 0 Then             With c.Characters(Start:=K, Length:=Len(sReplace)).Font                 .Underline = xlUnderlineStyleSingle                 .Color = vbRed             End With         End If     Next c End Sub

マクロを使用するには、3つの変更を加える必要があります。 1つ目は、lCol変数が影響を与える列番号に設定されていることを確認することです。次に、セル内で検索して置換するテキストと同じsFindを設定する必要があります。セルにテキストを追加するだけの場合は、必要に応じて、sFindを空のままにしておくことができます(上記のとおり)。

最後に、sReplaceを、sFindを置き換えるもの、またはセルに追加するものと等しく設定する必要があります。

マクロは、指定された列の各セルを調べます。セルに数式が含まれておらず、すでにテキストが含まれている場合は、テキストが置き換えられるか、追加されます。最後に、セルに変更が加えられた場合、sReplaceにあったものには下線が引かれ、赤になります。セルに変更が加えられた場合、セル内の既存の書式設定は、行われた変更によって上書きされることに注意してください。

注:

このページ(または_ExcelTips_サイトの他のページ)で説明されているマクロの使用方法を知りたい場合は、役立つ情報を含む特別なページを用意しました。

_ExcelTips_は、費用効果の高いMicrosoftExcelトレーニングのソースです。

このヒント(9302)は、Microsoft Excel 2007、2010、2013、2016、2019、およびOffice365のExcelに適用されます。