Страница 2 из 2

Добавлено: 23 дек 2004, 11:52
e-aleks
Спасибо большое.
Все прекрасно работает.

Добавлено: 23 дек 2004, 14:22
Naeel Maqsudov
Тут еще выяснилась интересная штука, если ячейку с гиперссылкой скопировать, то
ActiveSheet.Hyperlinks.Count не изменяется. Т.е. в документе остается одна гиперссылка которая отображается в двух ячейках. (Естественно при исправление этой ссылки через ActiveSheet.Hyperlinks(i).Address=... влияет на обе ячейки)

Причем, прикол в том, что
ПерваяЯчейка.Hyperlinks.Count = 1 и ВтораяЯчейка.Hyperlinks.Count =1
Т.е. в каждой ячейке есть по ссылке, но общее количество прежнее

Теперь если отредактировоать гиперссылку во второй ячейке, то

ActiveSheet.Hyperlinks.Count увеличится; ПерваяЯчейка.Hyperlinks.Count = 1; а вот ВтораяЯчейка.Hyperlinks.Count = 2

Причем
ВтораяЯчейка.Hyperlinks(1) это старая гиперссылка, и изменение ни на что не влияет, а ВтораяЯчейка.Hyperlinks(2) это новая ссылка, которую и надо править.

Вот такая свистопляска с гиперссылками...

PS
Это проверено пока в EXCEL97

e-aleks, спасибо за вопрос. Очень познавательно :)

Добавлено: 23 дек 2004, 14:26
Naeel Maqsudov
Теперь если отредактировоать гиперссылку во второй ячейке, то

ActiveSheet.Hyperlinks.Count увеличится; ПерваяЯчейка.Hyperlinks.Count = 1; а вот ВтораяЯчейка.Hyperlinks.Count = 2
При дальнейших правках ВтораяЯчейка.Hyperlinks.Count остается равным 2....

Мистика....

Добавлено: 23 дек 2004, 16:39
Игорь Акопян
Специально проверил в 2000.
При копировании ActiveSheet.Hyperlinks.Count увеличивается.
Selection.Hyperlinks.Count показывает реальное кол-во гиперссылок в выделенном диапазоне, как при создании, так и после копирования

В продолжении темы.

Добавлено: 21 янв 2005, 15:50
e-aleks
А можно добавить в код пару строчек, чтобы в ячейке рядом отображалось еще название страницы.
Заранее спасибо.

Добавлено: 01 фев 2005, 22:02
Naeel Maqsudov
Элементарно. Достаточно одной строки.

Код: Выделить всё

Sub qwe() 
Dim lnk As Hyperlink 
  For Each lnk In ActiveSheet.Hyperlinks 
    lnk.Range.Next.Value = lnk.Address 
    lnk.Range.Next.Next.Value = lnk.Range.WorkSheet.Name
  Next 
End Sub 

... некрасиво получилось... часто втречается lnk надо with использовать...

Добавлено: 02 фев 2005, 07:15
e-aleks
Спасибо, большое.