Ученики Дороти настраивают книгу моделирования чековой книжки, заменяя имя по умолчанию своим собственным. Например, она хочет, чтобы они выполнили поиск по запросу «Джейсон Андерсон» и заменили имя на «Сью Смит».

«Джейсон Андерсон» встречается 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

Макрос предлагает пользователю ввести новое имя, а затем выполняет поиск в ячейках, комментариях и текстовых полях, чтобы увидеть, есть ли какие-либо вхождения имени по умолчанию («Джейсон Андерсон»). Если да, то производится соответствующая замена.

Если вы не хотите использовать макросы для поиска, возможно, будет полезна реструктуризация книги. Например, вы можете создать «лист ввода данных», в который вводится общая информация, такая как имя человека. На других листах имя из рабочего листа ввода данных указывается с помощью формул. Таким образом, одно изменение в листе ввода данных, и имя изменяется во всех остальных листах.

Используя этот подход, можно также работать с комментариями. Вы можете выбрать комментарий или фигуру и на панели формул ввести ссылочную формулу, например:

=MyName

Это предполагает, что имя пользователя на листе ввода данных связано с именованным диапазоном MyName. Если в комментарии или фигуре должна быть дополнительная информация, вы можете построить этот текст в ячейке на листе ввода данных, а затем назначить содержимое этой ячейки комментарию или фигуре, как указано для именованного диапазона MyName.

_Примечание: _

Если вы хотите узнать, как использовать макросы, описанные на этой странице (или на любой другой странице на сайтах ExcelTips), я подготовил специальную страницу, содержащую полезную информацию.

link: / excelribbon-ExcelTipsMacros [Щелкните здесь, чтобы открыть эту специальную страницу в новой вкладке браузера].

ExcelTips — ваш источник экономичного обучения Microsoft Excel.

Этот совет (2614) применим к Microsoft Excel 2007, 2010, 2013 и 2016.