День добрый, можно ли каким то способом, желательно без применения макросов, изменять имя Листа из ячейки этого листа, или даже из соседнего!!??? Заранее СПАСИБО!!!
День добрый, можно ли каким то способом, желательно без применения макросов, изменять имя Листа из ячейки этого листа, или даже из соседнего!!??? Заранее СПАСИБО!!!NIC
ЖАЛЬ! Не дружу я с этими макросами, да и ознакомиться некогда! Но скоро чувствую придется! И что же нужно написать, в исходном тексте, чтобы автоматом обновлялся, если не секрет!!!??? Спасибо
ЖАЛЬ! Не дружу я с этими макросами, да и ознакомиться некогда! Но скоро чувствую придется! И что же нужно написать, в исходном тексте, чтобы автоматом обновлялся, если не секрет!!!??? СпасибоNIC
Посмотрите. В ячейку А1 пишите имя и оно заменяет имя активного листа Код в модуле Эта книга [vba]
Код
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) If Target.Address(0, 0) = "A1" Then Sheets(Sh.Index).Name = Target.Value End Sub
[/vba] Макросы должны быть разрешены в настройках безопасности Excel
Посмотрите. В ячейку А1 пишите имя и оно заменяет имя активного листа Код в модуле Эта книга [vba]
Код
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) If Target.Address(0, 0) = "A1" Then Sheets(Sh.Index).Name = Target.Value End Sub
[/vba] Макросы должны быть разрешены в настройках безопасности ExcelAlexM
КЛАСС!!! Работает! Только вот ещё какая штука, а если эта ячейка с именем будет формулой и будет обращена к другому листу, то не меняется, что нужно дописать или без вариантов!??? Заранее спасибо!!!
КЛАСС!!! Работает! Только вот ещё какая штука, а если эта ячейка с именем будет формулой и будет обращена к другому листу, то не меняется, что нужно дописать или без вариантов!??? Заранее спасибо!!!NIC
Извиняюсь. Можно конечно потратить время и показать, что это возможно, но к сожалению вам новый пример не пригодится. Напишите и покажите на примере что вам нужно. Может быть так надо? На Лист1 (не важно название) В ячейках А2, А3 и А4 пишем названия листов. При записи в А2 меняется название Листа2 При записи в А3 меняется название Листа3 При записи в А4 меняется название Листа4 И тд.
Извиняюсь. Можно конечно потратить время и показать, что это возможно, но к сожалению вам новый пример не пригодится. Напишите и покажите на примере что вам нужно. Может быть так надо? На Лист1 (не важно название) В ячейках А2, А3 и А4 пишем названия листов. При записи в А2 меняется название Листа2 При записи в А3 меняется название Листа3 При записи в А4 меняется название Листа4 И тд.AlexM
Номер мобильного модема (без голосовой связи) 9269171249 МегаФон, Московский регион.
Вот вам пример на выше описанный алгоритм Код в модуле Лист1 [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Range("A2:A4"), Target) Is Nothing Then For Each iCell In Target Sheets(iCell.Row).Name = IIf(iCell <> "", iCell.Value, WorksheetFunction.Rept(" ", iCell.Row)) Next End If End Sub
[/vba]
Вот вам пример на выше описанный алгоритм Код в модуле Лист1 [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Range("A2:A4"), Target) Is Nothing Then For Each iCell In Target Sheets(iCell.Row).Name = IIf(iCell <> "", iCell.Value, WorksheetFunction.Rept(" ", iCell.Row)) Next End If End Sub
В заданные ячейки имена листов можно вставлять копированием по несколько. При удалении имени ярлык листа будет как бы пустой, имя будет составлено из нескольких пробелов по индексу (номеру) листа. Если так не сделать, макрос остановится на ошибке, так как имя не может быть пустым.
В заданные ячейки имена листов можно вставлять копированием по несколько. При удалении имени ярлык листа будет как бы пустой, имя будет составлено из нескольких пробелов по индексу (номеру) листа. Если так не сделать, макрос остановится на ошибке, так как имя не может быть пустым.AlexM
Номер мобильного модема (без голосовой связи) 9269171249 МегаФон, Московский регион.
[/vba] iCell.Row - это номер строки, в которой находится ячейка вызвавшая событие Worksheet_Change iCell.Column - это соответственно номер столбца По этим номерам определяем индекс листа, имя которого меняем. [vba]
[/vba] В этой строке листу с посчитанным индексом присваиваем имя из ячейки. Если ячейка не пустая, то имя берем из нее. Иначе имя составляем из пробелов (функция листа ПОВТОР()), количество пробелов равно индексу листа.
[vba]
Код
sh = iCell.Row - 2 + 4 * (iCell.Column - 3)
[/vba] iCell.Row - это номер строки, в которой находится ячейка вызвавшая событие Worksheet_Change iCell.Column - это соответственно номер столбца По этим номерам определяем индекс листа, имя которого меняем. [vba]
[/vba] В этой строке листу с посчитанным индексом присваиваем имя из ячейки. Если ячейка не пустая, то имя берем из нее. Иначе имя составляем из пробелов (функция листа ПОВТОР()), количество пробелов равно индексу листа.AlexM
Номер мобильного модема (без голосовой связи) 9269171249 МегаФон, Московский регион.
Сижу догоняю, не пойму никак, получается, если листы пойдут не по порядку, то макрос не годится!??? допустим, в ячейках J29:J32 и K29:K32 должны содержать имена листов: для J29:J32 1,7,8,9 а для K29:K32 3,10,11,12 прикладываю файл!!!??? Спасибо за терпение!
P.S.
Цитата (AlexM)
Извиняюсь. Можно конечно потратить время и показать, что это возможно, но к сожалению вам новый пример не пригодится.
Всё пригодится!!!
Сижу догоняю, не пойму никак, получается, если листы пойдут не по порядку, то макрос не годится!??? допустим, в ячейках J29:J32 и K29:K32 должны содержать имена листов: для J29:J32 1,7,8,9 а для K29:K32 3,10,11,12 прикладываю файл!!!??? Спасибо за терпение!
P.S.
Цитата (AlexM)
Извиняюсь. Можно конечно потратить время и показать, что это возможно, но к сожалению вам новый пример не пригодится.