Davidは、検索と置換を使用して、テキストボックスまたはグラフのラベル内のテキストを検索および変更できるかどうか疑問に思います。簡単に言えば、それは不可能ですが、試すことができるいくつかの回避策があります。

まず、テキストボックスまたはグラフラベルのテキストを簡単に動的にして、一部のワークシートセルのコンテンツに関連付けることができます。たとえば、テキストボックスに対して次のようにすることができます。

。各テキストボックスからワークシートのセルの範囲にテキストをコピーします。 (この例では、10個のテキストボックスの内容をZ1:Z10の範囲にコピーしたと仮定します。)

。最初のテキストボックス(セルZ1に対応するもの)を選択し、テキストボックスの内容を削除します。

。テキストボックスを選択したまま、数式バーに次のように入力します:= Z1。 Enterキーを押すと、テキストボックスにセルZ1の内容が反映されます。

。手順3のそれぞれに適切なセル参照を使用して、他のテキストボックスごとに手順2と3を繰り返します。

それでおしまい。カスタムグラフラベルでも同じ手法を使用できます。必要なのは、グラフラベルを選択し、数式バーにセル参照を入力することだけです。ワークシートのセルに関連付けられたテキストボックスとグラフのラベルを使用すると、検索と置換を使用して、セル内の情報を簡単に検索および変更できます。変更が行われると、テキストボックスとグラフのラベルにセルの変更が自動的に反映されます。

テキストボックスまたはグラフラベル内のテキストを実際に変更する唯一の方法は、手動で変更するか、マクロを使用して変更することです。コードは、ワークシートの各テキストボックスをステップスルーしてから、変更を加える必要があります。以下は、そのような変更を行うことができるマクロの単純なバージョンです。

Sub TextBoxReplace()

Dim shp As Shape     Dim sOld As String     Dim sNew As String

'Change as desired     sOld = "Old string"

sNew = "New string"

On Error Resume Next     For Each shp In ActiveSheet.Shapes         With shp.TextFrame.Characters             .Text = Application.WorksheetFunction.Substitute( _               .Text, sOld, sNew)

End With     Next End Sub

このマクロは、ワークシート内のすべての図形(テキストボックスは図形)をステップスルーしてから、sOld変数にあるものをsNew変数にあるものに置き換えます。次のマクロに示すように、同じ手法をグラフラベルに適用するのは少し複雑です。

Sub ChartLabelReplace()

Dim Cht As ChartObject     Dim Ser As Series     Dim scPt As Point     Dim sOld As String     Dim sNew As String

'Change as desired     sOld = "Old String"

sNew = "New String"

On Error Resume Next     For Each Cht In ActiveSheet.ChartObjects         For Each Ser In Cht.Chart.SeriesCollection             For Each scPt In Ser.Points                 With scPt.DataLabel                     .Text = Application.WorksheetFunction.Substitute( _                       .Text, sOld, sNew)

End With             Next         Next     Next End Sub

マクロは、すべてのグラフのすべてのデータ系列の各データラベルをステップスルーし、(再び)sOldにあるもののインスタンスをsNewにあるものに置き換えます。

注:

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

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

このヒント(9262)は、Microsoft Excel 97、2000、2002、および2003に適用されます。Excel(Excel 2007以降)のリボンインターフェイス用のこのヒントのバージョンは、次の場所にあります。