Страницы: 1
RSS
Автоматическая подмена имени листа. Сложная задача, решения нет, помогите!
 
Уважаемый господа,    
 
Есть Макрос подмены имени листа в зависимости от значение в определенной ячейке на этом листе.  
Вот собственно и он  
 
Sub SetActiveSheetName()  
 Dim NewName As String, WsExist As Boolean  
 On Error Resume Next  
 
 NewName = [B3]
 
 If Len(NewName) = 0 Then Exit Sub  
 
 With Worksheets(NewName): End With  
 WsExist = (Err = 0)  
 
 Err.Clear  
 
 Application.EnableEvents = False  
 ActiveSheet.Name = NewName  
 If Err <> 0 Then  
   MsgBox "Имя '" & NewName & "' " _  
        & IIf(WsExist, "уже существует!", "ошибочно") & vbCrLf _  
        & "Введите другое имя", _  
        vbCritical, _  
        "  Ошибка!"  
 
   Application.Undo  
 End If  
 Application.EnableEvents = True  
End Sub  
 
 
ВОПРОС?  
 
Если к примеру где то ещё в других макросах упоминается имя листа к примеру вот так    
Sheets("Отчетный месяц").Visible = True  
То при перемене его имени он тут не меняется и макрос больше не работает, как выйти из ситуации????  
У меня Sheets("Отчетный месяц").Visible = True идет как Лист1, но если поставить вот так Sheets(Лист1).Visible = True, то возникает ошибка, а как подругому незнаю=((((  
 
Заранее всем спасибо!  
 
С уважением,  
Александр
 
В редакторе VBA присвойте листу КОДОВОЕ имя - и по нему обращайтесь к листу в макросе.  
 
К примеру, изменяем у листа "Отчетный месяц" в редакторе VBA свойство Codename с Лист1 (ну или какое он там имеет имя по умолчанию) на Otch  
 
И в макросе вместо Sheets("Отчетный месяц").Visible = True  
пишем Otch.Visible = True  
 
Теперь замена имени листа никак не повлияет на ваши мкаросы - кодовое имя листа меняться не будет.
Страницы: 1
Читают тему
Наверх
Loading...