SERGE_BLIZNUK
Silver Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Макрос переименования (перенумерации номеров книг в ссылках) Код: Sub ПеренумероватьСсылкиНаЛисты() Dim Sformula, Snum As String Dim FindString As String Dim FirstBook, Pos1, i As Long i = 0 ' счётчик книг (номеров) Pos1 = Len("=Лист") + 1 ' просто для удобства For Each c In Selection If i = 0 Then 'номер, от которого нумеровать возьмём из 1-й ячейки выделения Sformula = c.Formula If (InStr(Sformula, "=Лист") <> 1) Or (InStr(Sformula, "!") = 0) Then MsgBox "В первой ячейки выделения ссылка на другой лист не найдена." _ & Chr(13) & " Нечего делать!" Exit Sub End If ' выделим конкретно только номер книги (то, что после "Лист" и до "!" Snum = Mid(Sformula, Pos1, InStr(Sformula, "!") - Pos1) If Val(Snum) = 0 Then MsgBox "Ошибка - книга без нумерации... Нечего делать, выходим." Exit Sub End If FirstBook = Val(Snum) ' получить номер книги в 1-й выд.ячейке i = 1 ' всё 1-й (при i=0 обработан, больше в эту ветку не заходим Else If (InStr(c.Formula, "=Лист") = 1) And (InStr(c.Formula, "!") > 1) Then Snum = Mid(c.Formula, Pos1, InStr(c.Formula, "!") - Pos1) If Val(Snum) > 0 Then ' Findstring это номер книги в текущей ячейке, который надо поменять FindString = Mid(c.Formula, 2, InStr(c.Formula, "!") - 1) ' MsgBox "Меняем " & FindString & " на " & "Лист" & Trim(CStr(FirstBook + i)) & "!" c.Formula = Replace(c.Formula, FindString, _ "Лист" & Trim(CStr(FirstBook + i)) & "!") i = i + 1 End If End If End If Next c End Sub | |