Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   [решено] Excel. Присвоить имя листу с определенной ячейки. (http://forum.oszone.net/showthread.php?t=256651)

andre-tr 19-03-2013 12:53 2114286

Excel. Присвоить имя листу с определенной ячейки.
 
Вложений: 1
Здравствуйте!
Возник вопрос. Как присвоить имя листу экселя значение с определенной ячейки, т.е. нужно чтоб при изменении значения в ячейки "В2" изменялось имя текущего листа на то значение в ячейке. Ячейка является раскрывающимся списком. Пример в приложенном файле.

Delirium 19-03-2013 14:25 2114375

Код:

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
If ActiveWorkbook.ActiveSheet.Name <> ActiveWorkbook.ActiveSheet.Range("B2") Then
    ActiveWorkbook.ActiveSheet.Name = ActiveWorkbook.ActiveSheet.Range("B2")
    End If
End Sub

Вешаем событие на SheetChange для книги. Оно происходит при любом изменении в книге. В коде сверяется текущее имя книги и значение в ячейке. Если они не равно, происходит присваивание имени.
Можно и без проверки значения, но зачем эти лишние присваивания.
Вместо B2 ставим нужную ячейку и будет счастье :)

А вообще все это делается очень просто. Запускается запись макроса - изменяем имя книги, изменяем значение в ячейке - останавливаем макрос. Смотрим полученный код, там есть все, что нужно.

andre-tr 19-03-2013 15:14 2114408

Спасибо! Все получилось.
А можно сделать не для всей книги, а только для отдельного листа?

AlexVol 20-03-2013 09:36 2114809

Цитата:

Цитата andre-tr
А можно сделать не для всей книги, а только для отдельного листа? »

А Вам что показали? Как раз меняется один текущий лист (что просили, то и дадено). Если надо изменить другой, то вместо ActiveSheet подставляем Worksheets(номер_листа).

andre-tr 20-03-2013 10:28 2114828

Спасибо за ответ, разобрался.


Время: 05:26.

Время: 05:26.
© OSzone.net 2001-