Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Гиперссылка на лист,где имя присваивается через переменную - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Гиперссылка на лист,где имя присваивается через переменную (Макросы/Sub)
Гиперссылка на лист,где имя присваивается через переменную
elo4ka07 Дата: Понедельник, 07.09.2015, 08:46 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 8
Репутация: 0 ±
Замечаний: 20% ±

Excel 2013
Помогите кто-нибудь, пожалуйста.... Пытаюсь сделать #гиперссылку по аналогии, но не получается сослаться на нужный лист. Написала программку где добавляется шифр товара и по нему по кнопке создается новый лист с соответствующем именем:

[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 - Понедельник, 07.09.2015, 12:29
 
Ответить
СообщениеПомогите кто-нибудь, пожалуйста.... Пытаюсь сделать #гиперссылку по аналогии, но не получается сослаться на нужный лист. Написала программку где добавляется шифр товара и по нему по кнопке создается новый лист с соответствующем именем:

[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
Дата добавления - 07.09.2015 в 08:46
KSV Дата: Понедельник, 07.09.2015, 12:47 | Сообщение № 2
Группа: Друзья
Ранг: Ветеран
Сообщений: 770
Репутация: 255 ±
Замечаний: 0% ±

Excel 2013
Добрый день!
Как вариант: [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 (чтоб даже кнопку не нажимать) и доработал бы его, чтоб при изменении значения в ячейке не создавался бы новый лист, а менялось имя и ссылка на уже существующий.
К сообщению приложен файл: 2099944.xlsm (88.4 Kb)


KSV.VBA@gmail.com
Яндекс.Деньги: 410011921213333
 
Ответить
СообщениеДобрый день!
Как вариант: [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
Дата добавления - 07.09.2015 в 12:47
elo4ka07 Дата: Понедельник, 07.09.2015, 12:55 | Сообщение № 3
Группа: Пользователи
Ранг: Прохожий
Сообщений: 8
Репутация: 0 ±
Замечаний: 20% ±

Excel 2013
KSV, УУУУУХ ТЫЫЫЫЫ!!!!! respect Всё работает!!!! hands спасибо огромное!!!! specool
 
Ответить
СообщениеKSV, УУУУУХ ТЫЫЫЫЫ!!!!! respect Всё работает!!!! hands спасибо огромное!!!! specool

Автор - elo4ka07
Дата добавления - 07.09.2015 в 12:55
KSV Дата: Понедельник, 07.09.2015, 12:57 | Сообщение № 4
Группа: Друзья
Ранг: Ветеран
Сообщений: 770
Репутация: 255 ±
Замечаний: 0% ±

Excel 2013
Пожалуйста! :)


KSV.VBA@gmail.com
Яндекс.Деньги: 410011921213333
 
Ответить
СообщениеПожалуйста! :)

Автор - KSV
Дата добавления - 07.09.2015 в 12:57
ZamoK Дата: Понедельник, 07.09.2015, 16:05 | Сообщение № 5
Группа: Проверенные
Ранг: Обитатель
Сообщений: 268
Репутация: 4 ±
Замечаний: 0% ±

Excel 2003-2016
P.S.
Хотя, я бы сразу вешал этот код на событие Worksheet_Change (чтоб даже кнопку не нажимать) и доработал бы его, чтоб при изменении значения в ячейке не создавался бы новый лист, а менялось имя и ссылка на уже существующий.

Очень интересная мулька! А как с примером, посмотреть бы в работе.


Я не Гуру, но стремлюсь!
 
Ответить
Сообщение
P.S.
Хотя, я бы сразу вешал этот код на событие Worksheet_Change (чтоб даже кнопку не нажимать) и доработал бы его, чтоб при изменении значения в ячейке не создавался бы новый лист, а менялось имя и ссылка на уже существующий.

Очень интересная мулька! А как с примером, посмотреть бы в работе.

Автор - ZamoK
Дата добавления - 07.09.2015 в 16:05
KSV Дата: Понедельник, 07.09.2015, 16:52 | Сообщение № 6
Группа: Друзья
Ранг: Ветеран
Сообщений: 770
Репутация: 255 ±
Замечаний: 0% ±

Excel 2013
А как с примером, посмотреть бы в работе.

например, так: [vba]
Код
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
[/vba]
К сообщению приложен файл: 6966812.xlsm (84.4 Kb)


KSV.VBA@gmail.com
Яндекс.Деньги: 410011921213333
 
Ответить
Сообщение
А как с примером, посмотреть бы в работе.

например, так: [vba]
Код
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
[/vba]

Автор - KSV
Дата добавления - 07.09.2015 в 16:52
elo4ka07 Дата: Вторник, 08.09.2015, 08:24 | Сообщение № 7
Группа: Пользователи
Ранг: Прохожий
Сообщений: 8
Репутация: 0 ±
Замечаний: 20% ±

Excel 2013
KSV, тоже отличный вариант! thumb сейчас при работе возник еще один нюанс, можно было бы добавить такой нюанс:
при удалении наименования из таблицы, удалялся бы и лист.
[moder]Вопрос не относится к теме "Гиперссылка на лист...", создайте новую[/moder]


Сообщение отредактировал Pelena - Вторник, 08.09.2015, 08:27
 
Ответить
СообщениеKSV, тоже отличный вариант! thumb сейчас при работе возник еще один нюанс, можно было бы добавить такой нюанс:
при удалении наименования из таблицы, удалялся бы и лист.
[moder]Вопрос не относится к теме "Гиперссылка на лист...", создайте новую[/moder]

Автор - elo4ka07
Дата добавления - 08.09.2015 в 08:24
Сергей-К Дата: Воскресенье, 24.04.2016, 20:33 | Сообщение № 8
Группа: Пользователи
Ранг: Участник
Сообщений: 50
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Здравствуйте. Помогите написать код, который будет искать в столбце [C:C] последнюю заполненную ячейку и введёт в неё гиперссылку на лист, имя которого и указано в этой ячейке.
Спасибо
[moder]Читаем Правила форума, создаём свою тему. Эта тема закрыта[/moder]
К сообщению приложен файл: _-.xlsb (17.3 Kb)


Сообщение отредактировал Pelena - Воскресенье, 24.04.2016, 21:03
 
Ответить
СообщениеЗдравствуйте. Помогите написать код, который будет искать в столбце [C:C] последнюю заполненную ячейку и введёт в неё гиперссылку на лист, имя которого и указано в этой ячейке.
Спасибо
[moder]Читаем Правила форума, создаём свою тему. Эта тема закрыта[/moder]

Автор - Сергей-К
Дата добавления - 24.04.2016 в 20:33
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Гиперссылка на лист,где имя присваивается через переменную (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!