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

Вход

Регистрация

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

 

= Мир MS Excel/Работа с гиперссылками в макросах - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
Страница 1 из 11
Модератор форума: _Boroda_, Pelena, Manyasha, SLAVICK 
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Работа с гиперссылками в макросах (Макросы/Sub)
Работа с гиперссылками в макросах
ska Дата: Суббота, 19.03.2016, 01:39 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 22
Репутация: 0 ±
Замечаний: 20% ±

Excel 2010
Здравствуйте, прошу помочь разобраться с организацией гиперссылок в макросах для конкретного примера. Есть первый лист с данными. Есть также второй лист, на котором используется частичная выборка данных с первого листа. На первом листе есть ячейки, в которых формулой формируются гиперссылки. Нужно при выборке организовать макросом работу гиперссылок на втором листе. Пример в файле.

Как перенести адрес гиперссылки из ячеек таблицы "Данные_" в рассматриваемом примере?
При организации выборки данных со второго листа как проверить, что в ячейках есть организованные формулами гиперссылки вместо проверки по названию столбца "гиперссылка"?
К сообщению приложен файл: 2725921.zip(88Kb)
 
Ответить
СообщениеЗдравствуйте, прошу помочь разобраться с организацией гиперссылок в макросах для конкретного примера. Есть первый лист с данными. Есть также второй лист, на котором используется частичная выборка данных с первого листа. На первом листе есть ячейки, в которых формулой формируются гиперссылки. Нужно при выборке организовать макросом работу гиперссылок на втором листе. Пример в файле.

Как перенести адрес гиперссылки из ячеек таблицы "Данные_" в рассматриваемом примере?
При организации выборки данных со второго листа как проверить, что в ячейках есть организованные формулами гиперссылки вместо проверки по названию столбца "гиперссылка"?

Автор - ska
Дата добавления - 19.03.2016 в 01:39
Karataev Дата: Суббота, 19.03.2016, 10:59 | Сообщение № 2
Группа: Проверенные
Ранг: Ветеран
Сообщений: 641
Репутация: 226 ±
Замечаний: 0% ±

Excel
Формулу можно упростить для листа Данные_, для M2 (нет смысла проверять пустоту, т.к. она и так проверяется в самом начале):
Код
=ЕСЛИ(ЕПУСТО([Столбец1]);"";ГИПЕРССЫЛКА("Картинки\"&ТЕКСТ([IDДанные];"0")&"_"&[Столбец1]&".jpg";ТЕКСТ([IDДанные];"0")&"_"&[Столбец1]))

По поводу гиперссылки. Создавайте гиперссылку не с помощью формулы, а используя другой вид гиперссылки. Попробуйте адаптировать это в свой макрос:
[vba]
Код
Sub Вставить_гиперссылку()
    
    Dim shSrc As Worksheet, shTarget As Worksheet
    
    Set shSrc = Worksheets("Данные_")
    Set shTarget = Worksheets("Выборка")

    If shSrc.Range("B2").Value = Empty Then
        Exit Sub
    End If
    
    shTarget.Range("M2").Hyperlinks.Delete
    shTarget.Hyperlinks.Add Anchor:=shTarget.Range("I2"), _
        Address:="Картинки\" & Format(shSrc.Range("A2").Value, "0") & "_" & shSrc.Range("B2").Value & ".jpg", _
        TextToDisplay:=Format(shSrc.Range("A2").Value, "0") & "_" & shSrc.Range("B2").Value

End Sub
[/vba]


 
Ответить
СообщениеФормулу можно упростить для листа Данные_, для M2 (нет смысла проверять пустоту, т.к. она и так проверяется в самом начале):
Код
=ЕСЛИ(ЕПУСТО([Столбец1]);"";ГИПЕРССЫЛКА("Картинки\"&ТЕКСТ([IDДанные];"0")&"_"&[Столбец1]&".jpg";ТЕКСТ([IDДанные];"0")&"_"&[Столбец1]))

По поводу гиперссылки. Создавайте гиперссылку не с помощью формулы, а используя другой вид гиперссылки. Попробуйте адаптировать это в свой макрос:
[vba]
Код
Sub Вставить_гиперссылку()
    
    Dim shSrc As Worksheet, shTarget As Worksheet
    
    Set shSrc = Worksheets("Данные_")
    Set shTarget = Worksheets("Выборка")

    If shSrc.Range("B2").Value = Empty Then
        Exit Sub
    End If
    
    shTarget.Range("M2").Hyperlinks.Delete
    shTarget.Hyperlinks.Add Anchor:=shTarget.Range("I2"), _
        Address:="Картинки\" & Format(shSrc.Range("A2").Value, "0") & "_" & shSrc.Range("B2").Value & ".jpg", _
        TextToDisplay:=Format(shSrc.Range("A2").Value, "0") & "_" & shSrc.Range("B2").Value

End Sub
[/vba]

Автор - Karataev
Дата добавления - 19.03.2016 в 10:59
ska Дата: Суббота, 19.03.2016, 12:14 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 22
Репутация: 0 ±
Замечаний: 20% ±

Excel 2010
Karataev, спасибо, что обратили внимание на более сложную формулу и лишнюю проверку. Формулу поправил.

И все же вопросы:
Как определить макросом, что в ячейке листа "Данные_" гиперссылка? Какое условие можно использовать?
Как в макросе "вынуть" адрес из ячейки листа "Данные_" для дальнейшего использования в листе "Выборка"?


Сообщение отредактировал ska - Суббота, 19.03.2016, 12:17
 
Ответить
СообщениеKarataev, спасибо, что обратили внимание на более сложную формулу и лишнюю проверку. Формулу поправил.

И все же вопросы:
Как определить макросом, что в ячейке листа "Данные_" гиперссылка? Какое условие можно использовать?
Как в макросе "вынуть" адрес из ячейки листа "Данные_" для дальнейшего использования в листе "Выборка"?

Автор - ska
Дата добавления - 19.03.2016 в 12:14
Karataev Дата: Суббота, 19.03.2016, 12:24 | Сообщение № 4
Группа: Проверенные
Ранг: Ветеран
Сообщений: 641
Репутация: 226 ±
Замечаний: 0% ±

Excel
Как определить макросом, что в ячейке листа "Данные_" гиперссылка? Какое условие можно использовать?

Напрямую нельзя узнать, а косвенно можно. Гиперссылка появляется, если в столбце B есть данные. Значит макрос может понять, есть гиперссылка или нет, посмотрев столбец B, что у меня и представлено в посте 2.


 
Ответить
Сообщение
Как определить макросом, что в ячейке листа "Данные_" гиперссылка? Какое условие можно использовать?

Напрямую нельзя узнать, а косвенно можно. Гиперссылка появляется, если в столбце B есть данные. Значит макрос может понять, есть гиперссылка или нет, посмотрев столбец B, что у меня и представлено в посте 2.

Автор - Karataev
Дата добавления - 19.03.2016 в 12:24
ska Дата: Суббота, 19.03.2016, 12:41 | Сообщение № 5
Группа: Пользователи
Ранг: Новичок
Сообщений: 22
Репутация: 0 ±
Замечаний: 20% ±

Excel 2010
Видел такой макрос:

[vba]
Код
Function FormulaHyperlink(ByRef cell As Range) As String
    If cell.HasFormula And (cell.Hyperlinks.Count = 0) Then
        If cell.Formula Like "=HYPERLINK*" Then
            FormulaHyperlink = Evaluate(Mid$(Split(cell.Formula, ",")(0), 12))
        End If
    End If
End Function
[/vba]

Пытаюсь понять, как его можно использовать для моих целей (ссылка)


Сообщение отредактировал ska - Суббота, 19.03.2016, 12:42
 
Ответить
СообщениеВидел такой макрос:

[vba]
Код
Function FormulaHyperlink(ByRef cell As Range) As String
    If cell.HasFormula And (cell.Hyperlinks.Count = 0) Then
        If cell.Formula Like "=HYPERLINK*" Then
            FormulaHyperlink = Evaluate(Mid$(Split(cell.Formula, ",")(0), 12))
        End If
    End If
End Function
[/vba]

Пытаюсь понять, как его можно использовать для моих целей (ссылка)

Автор - ska
Дата добавления - 19.03.2016 в 12:41
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Работа с гиперссылками в макросах (Макросы/Sub)
Страница 1 из 11
Поиск:

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