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]
Он рабочий но у меня задача чуть сложнее. Нужно чтобы имя листов бралось из ячеек
Например из листа 2 диапазон ячеек F10:O10 имя бы подставлялось в нужный лист F10 - лист 5 G10 - лист 6 H10 - лист 7 и так далее.....
Другими словами нужно чтобы имена нужных листов брались из горизонтального диапазона ячеек.
Заранее благодарен за помощь!
Добрый день!
Нашел макрос у вас [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]
Он рабочий но у меня задача чуть сложнее. Нужно чтобы имя листов бралось из ячеек
Например из листа 2 диапазон ячеек F10:O10 имя бы подставлялось в нужный лист F10 - лист 5 G10 - лист 6 H10 - лист 7 и так далее.....
Другими словами нужно чтобы имена нужных листов брались из горизонтального диапазона ячеек.
Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Range("F10:O10"), Target) Is Nothing Then For Each iCell In Range("F10:O10") Sheets(iCell.Column).Name = IIf(iCell <> "", iCell.Value, WorksheetFunction.Rept(" ", iCell.Column)) Next End If End Sub
[/vba]
Ура получилось
Вот что прописал:
Спасибо большое
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Range("F10:O10"), Target) Is Nothing Then For Each iCell In Range("F10:O10") Sheets(iCell.Column).Name = IIf(iCell <> "", iCell.Value, WorksheetFunction.Rept(" ", iCell.Column)) Next End If End Sub
Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Range("G9:V9"), Target) Is Nothing Then For Each iCell In Range("G9:V9") Sheets(iCell.Column).Name = IIf(iCell <> "", iCell.Value, WorksheetFunction.Rept(" ", iCell.Column)) Next End If End Sub
[/vba]
Остался маленький вопрос: Подскажите пожалуйста как поменять номер листа с которого начинается переименование.
Сейчас идет с 7 листа, то есть номер столбца и номер листа совпадает G=7. Если мне нужно чтобы имя листа стояло в G9 а переименовывался 3 лист. Что нужно для этого?
Всем большое спасибо за помощь все заработало
Код такой
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Range("G9:V9"), Target) Is Nothing Then For Each iCell In Range("G9:V9") Sheets(iCell.Column).Name = IIf(iCell <> "", iCell.Value, WorksheetFunction.Rept(" ", iCell.Column)) Next End If End Sub
[/vba]
Остался маленький вопрос: Подскажите пожалуйста как поменять номер листа с которого начинается переименование.
Сейчас идет с 7 листа, то есть номер столбца и номер листа совпадает G=7. Если мне нужно чтобы имя листа стояло в G9 а переименовывался 3 лист. Что нужно для этого?lil000
Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Range("G9:V9"), Target) Is Nothing Then For Each iCell In Range("G9:V9") Sheets(3 + a).Name = IIf(iCell <> "", iCell.Value, WorksheetFunction.Rept(" ", iCell.Column)) a = a + 1 Next End If End Sub
[/vba]
Файл не соответсвует макросу Так хотели? [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Range("G9:V9"), Target) Is Nothing Then For Each iCell In Range("G9:V9") Sheets(3 + a).Name = IIf(iCell <> "", iCell.Value, WorksheetFunction.Rept(" ", iCell.Column)) a = a + 1 Next End If End Sub
У Вас уже есть лист Прихожая. Он скрытый и по счету 7-й. А Вы хотите третий лист назвать также. Низззя! Чтобы не ругался, а пропускал такие вещи [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Range("G9:V9"), Target) Is Nothing Then On Error Resume Next For Each iCell In Range("G9:V9") Sheets(3 + a).Name = IIf(iCell <> "", iCell.Value, WorksheetFunction.Rept(" ", iCell.Column)) a = a + 1 Next End If End Sub
[/vba]
У Вас уже есть лист Прихожая. Он скрытый и по счету 7-й. А Вы хотите третий лист назвать также. Низззя! Чтобы не ругался, а пропускал такие вещи [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Range("G9:V9"), Target) Is Nothing Then On Error Resume Next For Each iCell In Range("G9:V9") Sheets(3 + a).Name = IIf(iCell <> "", iCell.Value, WorksheetFunction.Rept(" ", iCell.Column)) a = a + 1 Next End If End Sub
Связь такая, что OERN должен отработать непосредственно перед строкой, вызвавшей ошибку. Или я не прав и он до первой ошибки, а не до первой строки?
Связь такая, что OERN должен отработать непосредственно перед строкой, вызвавшей ошибку. Или я не прав и он до первой ошибки, а не до первой строки?StoTisteg
Интуитивно понятный код - это когда интуитивно понятно, что это код.
Сейчас у мелкософта есть прекрасная справочная онлайн... кстати, есть и на русском, правда, машинный перевод, но для понимания достаточно Оператор On Error
Сейчас у мелкософта есть прекрасная справочная онлайн... кстати, есть и на русском, правда, машинный перевод, но для понимания достаточно Оператор On Errorboa