jjj9979, - Прочитайте Правила форума - Приложите файл с исходными данными и желаемым результатом (можно вручную) в формате Excel размером до 500 кб согласно п.3 Правил форума - Оформите формулу тегами (в режиме правки поста выделите формулу и нажмите кнопку fx, пояснялка здесь) - Оформите код тегами (в режиме правки поста выделите код и нажмите кнопку #, пояснялка здесь)
jjj9979, - Прочитайте Правила форума - Приложите файл с исходными данными и желаемым результатом (можно вручную) в формате Excel размером до 500 кб согласно п.3 Правил форума - Оформите формулу тегами (в режиме правки поста выделите формулу и нажмите кнопку fx, пояснялка здесь) - Оформите код тегами (в режиме правки поста выделите код и нажмите кнопку #, пояснялка здесь)китин
Не судите очень строго:я пытаюсь научиться ЯД 41001877306852
да, извините прикрепил к этому сообщению файл с примером в этом файле одна ссылка (верхняя) ОБЫЧНАЯ другая (нижняя) сформированная через ФОРМУЛУ и два макроса, один МОЙ, который я писал в первом сообщении, а другой макрос из ФОРУМА, НО нижнюю ссылку (сформированную формулой) не открывает ни один ни другой макрос подскажите ПОЖАЛУЙСТА что дописать в макрос, чтобы нижняя ссылка этим макросом открывалась? СПАСИБО
да, извините прикрепил к этому сообщению файл с примером в этом файле одна ссылка (верхняя) ОБЫЧНАЯ другая (нижняя) сформированная через ФОРМУЛУ и два макроса, один МОЙ, который я писал в первом сообщении, а другой макрос из ФОРУМА, НО нижнюю ссылку (сформированную формулой) не открывает ни один ни другой макрос подскажите ПОЖАЛУЙСТА что дописать в макрос, чтобы нижняя ссылка этим макросом открывалась? СПАСИБОjjj9979
У меня работает. Другой вопрос - как передавать в функцию Range. Через цикл? Через Select? Но это уже другая тема. Вы же формулой на какие-то ячейки ссылаетесь, отсюда и пляшите P.S. Кросс пользы не принес ООО, пробуйте:
Sub Макрос_с_форума()
Url$ = ActiveCell.Value IfLen(Url$) Then
ThisWorkbook.FollowHyperlink Url$ Else
Url$ = ActiveCell.Value EndIf EndSub Function FormulaHyperlink(ByRef cell As Range) AsString If cell.HasFormula And (cell.Hyperlinks.Count = 0) Then If cell.Formula Like"=HYPERLINK" & "*"Then
FormulaHyperlink = ActiveCell.Value EndIf EndIf EndFunction
В сообщении сверху проще. И нафига я полез с кодом ТС-а разбираться? Он на Планете просит готовый файл...
В Вашем примере из файла в функции запишите так:
FormulaHyperlink = Range("A1")
У меня работает. Другой вопрос - как передавать в функцию Range. Через цикл? Через Select? Но это уже другая тема. Вы же формулой на какие-то ячейки ссылаетесь, отсюда и пляшите P.S. Кросс пользы не принес ООО, пробуйте:
Sub Макрос_с_форума()
Url$ = ActiveCell.Value IfLen(Url$) Then
ThisWorkbook.FollowHyperlink Url$ Else
Url$ = ActiveCell.Value EndIf EndSub Function FormulaHyperlink(ByRef cell As Range) AsString If cell.HasFormula And (cell.Hyperlinks.Count = 0) Then If cell.Formula Like"=HYPERLINK" & "*"Then
FormulaHyperlink = ActiveCell.Value EndIf EndIf EndFunction
В сообщении сверху проще. И нафига я полез с кодом ТС-а разбираться? Он на Планете просит готовый файл..._Igor_61
Игорь (_Igor_61) Вы молодец спасибо БОЛЬШОЕ всё работает вы на другой форум написали тоже (но тот ваш ответ я только что увидел, то есть уже после того как отработал ваш ответ с готовым макросом на этом форуме) СПАСИБО ещё раз Игорь СПАСИБО
Игорь (_Igor_61) Вы молодец спасибо БОЛЬШОЕ всё работает вы на другой форум написали тоже (но тот ваш ответ я только что увидел, то есть уже после того как отработал ваш ответ с готовым макросом на этом форуме) СПАСИБО ещё раз Игорь СПАСИБОjjj9979
честно говоря так и не понял для чего там удф. в макрос (сооб. №5) добавить обработчик ошибки и все.
а так для разнообразия (может кому пригодится) не оптимизировал
Sub u_18() OnErrorResumeNext
b = Selection.Formula
c = Selection.Value
i = InStr(b, "=HYPERLINK(") If i > 0Then
d = Len(b) - 1 For e = 2To d
f = Right(Left(b, d), e)
g = Application.IfError(Evaluate(f), "") If g = c ThenExitFor Next If e < d - 12Then
h = Evaluate(Mid(b, 12, d - 12 - e)) Else
h = Evaluate(Mid(b, 12, d - 11)) EndIf Else
h = c EndIf WithCreateObject("WScript.Shell")
.Run h EndWith EndSub
честно говоря так и не понял для чего там удф. в макрос (сооб. №5) добавить обработчик ошибки и все.
а так для разнообразия (может кому пригодится) не оптимизировал
Sub u_18() OnErrorResumeNext
b = Selection.Formula
c = Selection.Value
i = InStr(b, "=HYPERLINK(") If i > 0Then
d = Len(b) - 1 For e = 2To d
f = Right(Left(b, d), e)
g = Application.IfError(Evaluate(f), "") If g = c ThenExitFor Next If e < d - 12Then
h = Evaluate(Mid(b, 12, d - 12 - e)) Else
h = Evaluate(Mid(b, 12, d - 11)) EndIf Else
h = c EndIf WithCreateObject("WScript.Shell")
.Run h EndWith EndSub
Наверное просто кусочек из какого-то проекта, где УДФ задействуется в разных макросах. Я вообще об этом даже не думал, просто заменил формулу на Value, посмотрел - работает :). Nic70y, Ваш макрос в три строчки и без разнообразия работает отлично, скорее всего я не все знаю, т.к. не профи, обязательны ли эти проверки если Value и так работает и с ссылкой и с формулой? Или есть какие-то подводные камни в этом?
Наверное просто кусочек из какого-то проекта, где УДФ задействуется в разных макросах. Я вообще об этом даже не думал, просто заменил формулу на Value, посмотрел - работает :). Nic70y, Ваш макрос в три строчки и без разнообразия работает отлично, скорее всего я не все знаю, т.к. не профи, обязательны ли эти проверки если Value и так работает и с ссылкой и с формулой? Или есть какие-то подводные камни в этом?_Igor_61