2016-11-22 4 views
2

У меня проблема с вложенными гиперссылками. Если я начну с чистого листа и вставить гиперссылку, а затем скопировать его на две другие клетки, используя два индивидуального копирования/Пасты:Подсчет гиперссылок

Sub hyper1() 
    Cells.Clear 
    With ActiveSheet 
     .Hyperlinks.Add Anchor:=Range("A1"), Address:="http://www.cnn.com/", TextToDisplay:="News" 
     Range("A1").Copy Range("A2") 
     Range("A1").Copy Range("A3") 
     MsgBox .Hyperlinks.Count 
    End With 
End Sub 

Три ячейки заполняются и Excel правильно сообщает число гиперссылок как .

Однако, если я заполняю вторые две ячейки с одним Copy/Paste:

Sub hyper2() 
    Cells.Clear 
    With ActiveSheet 
     .Hyperlinks.Add Anchor:=Range("A1"), Address:="http://www.cnn.com/", TextToDisplay:="News" 
     Range("A1").Copy Range("A2:A3") 
     MsgBox ActiveSheet.Hyperlinks.Count 
    End With 
End Sub 

Те же три ячейки заполняются, но Excel сообщает число гиперссылок как !!

Что не работает, Excel 2007 или мой компьютер?

ответ

4
Sub hyper3() 
    Cells.Clear 
    With ActiveSheet 
     .Hyperlinks.Add Anchor:=Range("A1"), Address:="http://www.cnn.com/", TextToDisplay:="News" 
     Range("A1").Copy Range("A2,A3") 
     MsgBox ActiveSheet.Hyperlinks.Count 
    End With 
End Sub 

Разделение запятой разбивает их на два диапазона вместо одного

+0

Спасибо большое! –

4

Я подозреваю это, потому что во втором макросе гиперссылка копируется как объект с одним диапазоном, а не в два отдельных диапазона (например, первый).

Excel будет рассматривать это как объект диапазона (который представляет диапазон, к которому привязана указанная гиперссылка). Поэтому он будет считать это одной гиперссылкой вместо двух.

Вы можете увидеть это, если вы нажмете на одну из ячеек A2 или A3 после запуска макроса (они одновременно изменят цвет, указывая на то, что выбрана гиперссылка).

+0

OUCH !! Поэтому, если я хочу обработать все гиперссылки на листе, мне нужно перебрать ** Ячейки **, а не ** Гиперссылки **? –

+0

Боюсь, что да. В отношении ваших примеров, если бы вы просто скопировали одну гиперссылку из диапазона, содержащего одну ячейку (диапазон («A1»)), в другую единицу диапазона любого размера, она все равно будет отображаться только как две гиперссылки на листе в целом поскольку второй диапазон его вставных двух будет учитываться как один раз. Что вы можете сделать, это определить свой диапазон, как так ... –

+0

Sub hyper3() Cells.Clear С ActiveSheet .Hyperlinks.Add Anchor: = Range ("A1"), Адрес: = "HTTP: // www.cnn.com/», TextToDisplay: = "Новости" Range ("A1"). Copy Range ("A2, A3") MsgBox ActiveSheet.Hyperlinks.Count End With End Sub –

Смежные вопросы