Код:

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