ドロシーの生徒たちは、小切手帳シミュレーションワークブックをカスタマイズして、デフォルトの名前を自分の名前に置き換えています。たとえば、彼女は彼らに「ジェイソンアンダーソン」を検索し、名前を「スースミス」に置き換えてもらいたいと考えています。

8つのワークシートタブ全体のテキストボックスに22回の「ジェイソンアンダーソン」があり、ワークシート自体にさらにいくつかあります。

ドロシーは、すべてのワークシートオカレンスとすべてのコメントオカレンスを一度に検索して置き換える方法を考えています。

マクロを使用せずにこれを行う方法はありません。マクロは、ワークブックの各セル、各コメント、および各テキストボックスを調べて、変更が必要かどうかを確認する必要があります。これを行う方法の例を次に示します。

Sub ReplaceNames()

Dim sDefaultName As String     Dim sNewName As String     Dim sht As Worksheet     Dim cmt As Comment     Dim wks As Worksheet     Dim sCmt As String     Dim shp As Shape

sDefaultName = "Jason Anderson"

sNewName = InputBox("Enter your first and last name.", _       "Name Replacement")



' Replace cell text     For Each sht In ActiveWorkbook.Worksheets         sht.Cells.Replace what:=sDefaultName, _           Replacement:=sNewName, LookAt:=xlPart, _           SearchOrder:=xlByRows, MatchCase:=False, _           SearchFormat:=False, ReplaceFormat:=False     Next sht

' Replace comment text     For Each wks In ActiveWorkbook.Worksheets         For Each cmt In wks.Comments             sCmt = cmt.Text             If InStr(sCmt, sDefaultName) <> 0 Then                 sCmt = Application.WorksheetFunction. _                   Substitute(sCmt, sDefaultName, sNewName)

cmt.Text Text:=sCmt             End If         Next cmt     Next wks     Set wks = Nothing     Set cmt = Nothing

' Replace text box text     On Error Resume Next     For Each wks In ActiveSheet.Parent.Worksheets         For Each shp In wks.Shapes             With shp.TextFrame.Characters                 .Text = Application.WorksheetFunction.Substitute( _                   .Text, sDefaultName, sNewName)

End With         Next shp     Next wks End Sub

マクロは、ユーザーに新しい名前の入力を求め、セル、コメント、およびテキストボックスを検索して、デフォルト名( “Jason Anderson”)が出現するかどうかを確認します。その場合、適切な交換が行われます。

マクロを使用して検索を実行したくない場合は、ブックの再構築が役立つ可能性があります。たとえば、人の名前などの一般的な情報を入力する「データ入力ワークシート」を作成できます。他のワークシートでは、データ入力ワークシートの名前は数式を使用して参照されます。したがって、データ入力ワークシートが1つ変更され、他のすべてのワークシートでは名前が変更されます。

このアプローチを使用すると、コメントでも機能します。コメントまたは図形を選択し、数式バーに次のような参照数式を入力できます。

=MyName

これは、データ入力ワークシート上のユーザーの名前がMyNameの名前付き範囲に関連付けられていることを前提としています。コメントまたは図形に追加情報が必要な場合は、データ入力ワークシートのセルにそのテキストを作成し、MyNameの名前付き範囲に記載されているように、そのセルの内容をコメントまたは図形に割り当てることができます。

注:

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

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

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