Помогите кто-нибудь, пожалуйста.... Пытаюсь сделать #гиперссылку по аналогии, но не получается сослаться на нужный лист. Написала программку где добавляется шифр товара и по нему по кнопке создается новый лист с соответствующем именем:
[vba]
Код
Sub Кнопка2_Щелчок() With Application.Workbooks.Item("Карточка_учета.xlsm") If (ActiveCell.Column = 2) And (Not IsEmpty(ActiveCell.Value)) Then 'проверяет активную ячейку пустая ли она a = ActiveCell.Address x = ActiveCell.Value Sheets("Шаблон").Copy , After:=Sheets("Общий перечень обозначений") 'копирует лист Шаблон и вставляет после Общего перечня обозначений ActiveSheet.Name = x 'присваивает имя новому листу по выделенной ячейке Sheets("Общий перечень обозначений").Hyperlinks.Add Anchor:=Sheets("Общий перечень обозначений").Range(a), Address:="Карточка_учета.xlsm", SubAddress:= _ "x!A1", TextToDisplay:=x 'присваивает гиперссылку End If End With End Sub
[/vba]
Проблема в том, что я не знаю как правильно сослаться на этот лист , ведь у него каждый раз новое имя и из-за этого оно определяется через переменную.
Помогите кто-нибудь, пожалуйста.... Пытаюсь сделать #гиперссылку по аналогии, но не получается сослаться на нужный лист. Написала программку где добавляется шифр товара и по нему по кнопке создается новый лист с соответствующем именем:
[vba]
Код
Sub Кнопка2_Щелчок() With Application.Workbooks.Item("Карточка_учета.xlsm") If (ActiveCell.Column = 2) And (Not IsEmpty(ActiveCell.Value)) Then 'проверяет активную ячейку пустая ли она a = ActiveCell.Address x = ActiveCell.Value Sheets("Шаблон").Copy , After:=Sheets("Общий перечень обозначений") 'копирует лист Шаблон и вставляет после Общего перечня обозначений ActiveSheet.Name = x 'присваивает имя новому листу по выделенной ячейке Sheets("Общий перечень обозначений").Hyperlinks.Add Anchor:=Sheets("Общий перечень обозначений").Range(a), Address:="Карточка_учета.xlsm", SubAddress:= _ "x!A1", TextToDisplay:=x 'присваивает гиперссылку End If End With End Sub
[/vba]
Проблема в том, что я не знаю как правильно сослаться на этот лист , ведь у него каждый раз новое имя и из-за этого оно определяется через переменную.elo4ka07
Сообщение отредактировал elo4ka07 - Понедельник, 07.09.2015, 12:29
Sub Кнопка2_Щелчок() Dim x As String With ActiveCell x = .Value If (.Column = 2) And Len(x) Then ' проверяет активную ячейку пустая ли она ThisWorkbook.Worksheets("Шаблон").Copy , .Parent ' копирует лист "Шаблон" и вставляет после листа "Общий перечень обозначений" ActiveSheet.Name = x ' присваивает имя новому листу по выделенной ячейке .Hyperlinks.Add .Item(1), "", x & "!A1", , x ' присваивает гиперссылку End If End With End Sub
[/vba]
[p.s.]Хотя, я бы сразу вешал этот код на событие Worksheet_Change (чтоб даже кнопку не нажимать) и доработал бы его, чтоб при изменении значения в ячейке не создавался бы новый лист, а менялось имя и ссылка на уже существующий.
Добрый день! Как вариант: [vba]
Код
Sub Кнопка2_Щелчок() Dim x As String With ActiveCell x = .Value If (.Column = 2) And Len(x) Then ' проверяет активную ячейку пустая ли она ThisWorkbook.Worksheets("Шаблон").Copy , .Parent ' копирует лист "Шаблон" и вставляет после листа "Общий перечень обозначений" ActiveSheet.Name = x ' присваивает имя новому листу по выделенной ячейке .Hyperlinks.Add .Item(1), "", x & "!A1", , x ' присваивает гиперссылку End If End With End Sub
[/vba]
[p.s.]Хотя, я бы сразу вешал этот код на событие Worksheet_Change (чтоб даже кнопку не нажимать) и доработал бы его, чтоб при изменении значения в ячейке не создавался бы новый лист, а менялось имя и ссылка на уже существующий.KSV
P.S. Хотя, я бы сразу вешал этот код на событие Worksheet_Change (чтоб даже кнопку не нажимать) и доработал бы его, чтоб при изменении значения в ячейке не создавался бы новый лист, а менялось имя и ссылка на уже существующий.
Очень интересная мулька! А как с примером, посмотреть бы в работе.
P.S. Хотя, я бы сразу вешал этот код на событие Worksheet_Change (чтоб даже кнопку не нажимать) и доработал бы его, чтоб при изменении значения в ячейке не создавался бы новый лист, а менялось имя и ссылка на уже существующий.
Очень интересная мулька! А как с примером, посмотреть бы в работе.ZamoK
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column <> 2 Then Exit Sub Dim x As String With Target(1) x = .Value If Len(x) Then ' проверяет активную ячейку пустая ли она If .Hyperlinks.Count Then ' если в ячейке уже есть гиперссылка With .Hyperlinks(1) If .Name <> x Then ' и значение ячейки изменилось Application.EnableEvents = False Worksheets(.Name).Name = x ' переименовываем лист .TextToDisplay = x .SubAddress = x & "!A1" ' исправляем гиперссылку Application.EnableEvents = True End If End With Else ' если гиперссылки в ячейке нет Worksheets("Шаблон").Copy , .Parent ' копирует лист "Шаблон" и вставляет после листа "Общий перечень обозначений" ActiveSheet.Name = x ' присваивает новому листу имя, равное значению выделенной ячейки .Hyperlinks.Add .Item(1), "", x & "!A1", , x ' присваивает гиперссылку End If End If End With End Sub
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column <> 2 Then Exit Sub Dim x As String With Target(1) x = .Value If Len(x) Then ' проверяет активную ячейку пустая ли она If .Hyperlinks.Count Then ' если в ячейке уже есть гиперссылка With .Hyperlinks(1) If .Name <> x Then ' и значение ячейки изменилось Application.EnableEvents = False Worksheets(.Name).Name = x ' переименовываем лист .TextToDisplay = x .SubAddress = x & "!A1" ' исправляем гиперссылку Application.EnableEvents = True End If End With Else ' если гиперссылки в ячейке нет Worksheets("Шаблон").Copy , .Parent ' копирует лист "Шаблон" и вставляет после листа "Общий перечень обозначений" ActiveSheet.Name = x ' присваивает новому листу имя, равное значению выделенной ячейки .Hyperlinks.Add .Item(1), "", x & "!A1", , x ' присваивает гиперссылку End If End If End With End Sub
KSV, тоже отличный вариант! сейчас при работе возник еще один нюанс, можно было бы добавить такой нюанс: при удалении наименования из таблицы, удалялся бы и лист. [moder]Вопрос не относится к теме "Гиперссылка на лист...", создайте новую[/moder]
KSV, тоже отличный вариант! сейчас при работе возник еще один нюанс, можно было бы добавить такой нюанс: при удалении наименования из таблицы, удалялся бы и лист. [moder]Вопрос не относится к теме "Гиперссылка на лист...", создайте новую[/moder]elo4ka07
Сообщение отредактировал Pelena - Вторник, 08.09.2015, 08:27
Здравствуйте. Помогите написать код, который будет искать в столбце [C:C] последнюю заполненную ячейку и введёт в неё гиперссылку на лист, имя которого и указано в этой ячейке. Спасибо [moder]Читаем Правила форума, создаём свою тему. Эта тема закрыта[/moder]
Здравствуйте. Помогите написать код, который будет искать в столбце [C:C] последнюю заполненную ячейку и введёт в неё гиперссылку на лист, имя которого и указано в этой ячейке. Спасибо [moder]Читаем Правила форума, создаём свою тему. Эта тема закрыта[/moder]Сергей-К