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

Вход

Регистрация

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

 

= Мир MS Excel/Переход по динамической гиперссылке макросом - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Переход по динамической гиперссылке макросом (Макросы/Sub)
Переход по динамической гиперссылке макросом
OIU Дата: Воскресенье, 18.10.2015, 09:28 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 48
Репутация: 3 ±
Замечаний: 0% ±

Excel 2013
Здравствуйте!
Задача:
Перейти по гиперссылке с помощь макроса.
Нюансы:
Гиперссылка динамическая и изменяется в зависимости от значения выбранного в выпадающем списке.
Макрос должен запускаться с помощью кнопки.
Вот что получается с помощью макро рекордера:
[vba]
Код
Sub Макрос1()
Range("D2").Select
Application.Goto Reference:="Расходный!R4C1"
End Sub
[/vba]
Этот вариант не подходит, так-как при изменении адреса гиперссылки, адрес в макросе остается неизменным.
Файл примера прилагается.
Заранее всем спасибо!!!
[moder]Для оформления кода используйте кнопку #[/moder]
К сообщению приложен файл: -010-.xls (36.0 Kb)


С уважением Евгений Ковель

Сообщение отредактировал Pelena - Воскресенье, 18.10.2015, 15:34
 
Ответить
СообщениеЗдравствуйте!
Задача:
Перейти по гиперссылке с помощь макроса.
Нюансы:
Гиперссылка динамическая и изменяется в зависимости от значения выбранного в выпадающем списке.
Макрос должен запускаться с помощью кнопки.
Вот что получается с помощью макро рекордера:
[vba]
Код
Sub Макрос1()
Range("D2").Select
Application.Goto Reference:="Расходный!R4C1"
End Sub
[/vba]
Этот вариант не подходит, так-как при изменении адреса гиперссылки, адрес в макросе остается неизменным.
Файл примера прилагается.
Заранее всем спасибо!!!
[moder]Для оформления кода используйте кнопку #[/moder]

Автор - OIU
Дата добавления - 18.10.2015 в 09:28
МВТ Дата: Воскресенье, 18.10.2015, 11:52 | Сообщение № 2
Группа: Проверенные
Ранг: Обитатель
Сообщений: 476
Репутация: 137 ±
Замечаний: 0% ±

Excel 2007
Как-то так (только у Вас немного неправильно диапазоны для списков заданы - только первая строка высвечивается)
[vba]
Код
Sub tt()
Dim R As Long
Dim C As Long
Dim Rng As Range
With Application
    On Error Resume Next
    C = .WorksheetFunction.Match(Range("B2").Value, Range("РА11"), 0)
    If Err Then
        MsgBox "Error", vbInformation
        Exit Sub
    End If
    R = .WorksheetFunction.Match(Range("C2").Value, Sheets("Расходный").Columns(C), 0)
    If Err Then
        MsgBox "Error", vbInformation
        Exit Sub
    End If
    With Sheets("Расходный")
        Set Rng = .Range(.Cells(R, C), .Cells(R, C))
    End With
    .Goto reference:=Rng
End With
End Sub
[/vba]


Сообщение отредактировал МВТ - Воскресенье, 18.10.2015, 11:53
 
Ответить
СообщениеКак-то так (только у Вас немного неправильно диапазоны для списков заданы - только первая строка высвечивается)
[vba]
Код
Sub tt()
Dim R As Long
Dim C As Long
Dim Rng As Range
With Application
    On Error Resume Next
    C = .WorksheetFunction.Match(Range("B2").Value, Range("РА11"), 0)
    If Err Then
        MsgBox "Error", vbInformation
        Exit Sub
    End If
    R = .WorksheetFunction.Match(Range("C2").Value, Sheets("Расходный").Columns(C), 0)
    If Err Then
        MsgBox "Error", vbInformation
        Exit Sub
    End If
    With Sheets("Расходный")
        Set Rng = .Range(.Cells(R, C), .Cells(R, C))
    End With
    .Goto reference:=Rng
End With
End Sub
[/vba]

Автор - МВТ
Дата добавления - 18.10.2015 в 11:52
OIU Дата: Воскресенье, 18.10.2015, 16:48 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 48
Репутация: 3 ±
Замечаний: 0% ±

Excel 2013
Не работает к сожалению. Выдаёт сообщение "Error"
Диапазоны видимо не правильно работают из-за версии файла.


С уважением Евгений Ковель

Сообщение отредактировал OIU - Воскресенье, 18.10.2015, 16:54
 
Ответить
СообщениеНе работает к сожалению. Выдаёт сообщение "Error"
Диапазоны видимо не правильно работают из-за версии файла.

Автор - OIU
Дата добавления - 18.10.2015 в 16:48
МВТ Дата: Воскресенье, 18.10.2015, 16:53 | Сообщение № 4
Группа: Проверенные
Ранг: Обитатель
Сообщений: 476
Репутация: 137 ±
Замечаний: 0% ±

Excel 2007
У меня работает - при условии, что данные есть и в B1, и в C1. Запускать надо с листа Вводный. Файл прикладываю
К сообщению приложен файл: -010-1-.xls (42.5 Kb)
 
Ответить
СообщениеУ меня работает - при условии, что данные есть и в B1, и в C1. Запускать надо с листа Вводный. Файл прикладываю

Автор - МВТ
Дата добавления - 18.10.2015 в 16:53
OIU Дата: Воскресенье, 18.10.2015, 17:01 | Сообщение № 5
Группа: Пользователи
Ранг: Новичок
Сообщений: 48
Репутация: 3 ±
Замечаний: 0% ±

Excel 2013
МВТ, да, так работает, но нужно не это) Вы видимо не проверили как работает ссылка. Ну ладно, не страшно) Ссылка нужна для добавления новых записей в столбцы. Если первая ячейка со списком пуста, то ссылка переносит тебя к первому пустому столбцу куда нужно добавить запись, а если пуста вторая ячейка со списком, то переходим к дополнению списка который выбран в первой ячейке. :)


С уважением Евгений Ковель
 
Ответить
СообщениеМВТ, да, так работает, но нужно не это) Вы видимо не проверили как работает ссылка. Ну ладно, не страшно) Ссылка нужна для добавления новых записей в столбцы. Если первая ячейка со списком пуста, то ссылка переносит тебя к первому пустому столбцу куда нужно добавить запись, а если пуста вторая ячейка со списком, то переходим к дополнению списка который выбран в первой ячейке. :)

Автор - OIU
Дата добавления - 18.10.2015 в 17:01
OIU Дата: Воскресенье, 18.10.2015, 17:33 | Сообщение № 6
Группа: Пользователи
Ранг: Новичок
Сообщений: 48
Репутация: 3 ±
Замечаний: 0% ±

Excel 2013
(только у Вас немного неправильно диапазоны для списков заданы - только первая строка высвечивается)

Это потому что в старых версиях меньше количество строк на листе =65536, а в моём файле задано =1048576. Это исправил и список стал весь отображаться.


С уважением Евгений Ковель
 
Ответить
Сообщение
(только у Вас немного неправильно диапазоны для списков заданы - только первая строка высвечивается)

Это потому что в старых версиях меньше количество строк на листе =65536, а в моём файле задано =1048576. Это исправил и список стал весь отображаться.

Автор - OIU
Дата добавления - 18.10.2015 в 17:33
OIU Дата: Воскресенье, 18.10.2015, 21:25 | Сообщение № 7
Группа: Пользователи
Ранг: Новичок
Сообщений: 48
Репутация: 3 ±
Замечаний: 0% ±

Excel 2013
МВТ, вот что мне удалось получить, подправив ваш код:
[vba]
Код
Sub tt()
Dim R As Long
Dim C As Long
Dim Rng As Range
With Application
     On Error Resume Next
     C = .WorksheetFunction.Match(Range("B2").Value, Range("РА11"), 0)
     If Err Then
    Sheets("Расходный").Select
    Range("A1").Select
    Selection.End(xlToRight).Select
    Selection.Offset(0, 1).Select
         Exit Sub
     End If
     R = .WorksheetFunction.Match(Range("B2").Value, Sheets("Расходный").Columns(C), 0)
     If Err Then
         MsgBox "Error", vbInformation
         Exit Sub
     End If
     With Sheets("Расходный")
         Set Rng = .Range(.Cells(R, C), .Cells(R, C))
     End With
     .Goto reference:=Rng
End With
    Selection.End(xlDown).Select
    Selection.Offset(1, 0).Select
End Sub
[/vba]
И всё бы ничего... Но мне теперь кажется что тут остались лишние детали dont . А так, именно вот этого я и хотел добиться!
Исправьте пожалуйста))) Буду вам очень признателен! victory


С уважением Евгений Ковель

Сообщение отредактировал OIU - Воскресенье, 18.10.2015, 22:07
 
Ответить
СообщениеМВТ, вот что мне удалось получить, подправив ваш код:
[vba]
Код
Sub tt()
Dim R As Long
Dim C As Long
Dim Rng As Range
With Application
     On Error Resume Next
     C = .WorksheetFunction.Match(Range("B2").Value, Range("РА11"), 0)
     If Err Then
    Sheets("Расходный").Select
    Range("A1").Select
    Selection.End(xlToRight).Select
    Selection.Offset(0, 1).Select
         Exit Sub
     End If
     R = .WorksheetFunction.Match(Range("B2").Value, Sheets("Расходный").Columns(C), 0)
     If Err Then
         MsgBox "Error", vbInformation
         Exit Sub
     End If
     With Sheets("Расходный")
         Set Rng = .Range(.Cells(R, C), .Cells(R, C))
     End With
     .Goto reference:=Rng
End With
    Selection.End(xlDown).Select
    Selection.Offset(1, 0).Select
End Sub
[/vba]
И всё бы ничего... Но мне теперь кажется что тут остались лишние детали dont . А так, именно вот этого я и хотел добиться!
Исправьте пожалуйста))) Буду вам очень признателен! victory

Автор - OIU
Дата добавления - 18.10.2015 в 21:25
KSV Дата: Воскресенье, 18.10.2015, 23:05 | Сообщение № 8
Группа: Друзья
Ранг: Ветеран
Сообщений: 770
Репутация: 255 ±
Замечаний: 0% ±

Excel 2013
Добрый вечер!
Как-то так: [vba]
Код
Sub tt()
    Dim R As Long
    Dim C As Long
    On Error Resume Next
    C = WorksheetFunction.Match(Range("B2").Value, Range("РА11"), 0)
    If Err Then
        Application.Goto Sheets("Расходный").Cells(1).End(xlToRight).Next
        Exit Sub
    End If
    R = .WorksheetFunction.Match(Range("B2").Value, Sheets("Расходный").Columns(C), 0)
    If Err Then
        MsgBox "Error", vbInformation
        Exit Sub
    End If
    Application.Goto Sheets("Расходный").Cells(R, C).End(xlDown).Offset(1)
End Sub
[/vba]


KSV.VBA@gmail.com
Яндекс.Деньги: 410011921213333
 
Ответить
СообщениеДобрый вечер!
Как-то так: [vba]
Код
Sub tt()
    Dim R As Long
    Dim C As Long
    On Error Resume Next
    C = WorksheetFunction.Match(Range("B2").Value, Range("РА11"), 0)
    If Err Then
        Application.Goto Sheets("Расходный").Cells(1).End(xlToRight).Next
        Exit Sub
    End If
    R = .WorksheetFunction.Match(Range("B2").Value, Sheets("Расходный").Columns(C), 0)
    If Err Then
        MsgBox "Error", vbInformation
        Exit Sub
    End If
    Application.Goto Sheets("Расходный").Cells(R, C).End(xlDown).Offset(1)
End Sub
[/vba]

Автор - KSV
Дата добавления - 18.10.2015 в 23:05
OIU Дата: Понедельник, 19.10.2015, 05:00 | Сообщение № 9
Группа: Пользователи
Ранг: Новичок
Сообщений: 48
Репутация: 3 ±
Замечаний: 0% ±

Excel 2013
KSV, ругается. Желтым выделяет первую строку.


С уважением Евгений Ковель
 
Ответить
СообщениеKSV, ругается. Желтым выделяет первую строку.

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

Excel 2013
да, там лишняя точка осталась.
нужно так: [vba]
Код
Sub tt()
    Dim R As Long
    Dim C As Long
    On Error Resume Next
    C = WorksheetFunction.Match(Range("B2").Value, Range("РА11"), 0)
    If Err Then
        Application.Goto Sheets("Расходный").Cells(1).End(xlToRight).Next
        Exit Sub
    End If
    R = WorksheetFunction.Match(Range("B2").Value, Sheets("Расходный").Columns(C), 0)
    If Err Then
        MsgBox "Error", vbInformation
        Exit Sub
    End If
    Application.Goto Sheets("Расходный").Cells(R, C).End(xlDown).Offset(1)
End Sub
[/vba]


KSV.VBA@gmail.com
Яндекс.Деньги: 410011921213333
 
Ответить
Сообщениеда, там лишняя точка осталась.
нужно так: [vba]
Код
Sub tt()
    Dim R As Long
    Dim C As Long
    On Error Resume Next
    C = WorksheetFunction.Match(Range("B2").Value, Range("РА11"), 0)
    If Err Then
        Application.Goto Sheets("Расходный").Cells(1).End(xlToRight).Next
        Exit Sub
    End If
    R = WorksheetFunction.Match(Range("B2").Value, Sheets("Расходный").Columns(C), 0)
    If Err Then
        MsgBox "Error", vbInformation
        Exit Sub
    End If
    Application.Goto Sheets("Расходный").Cells(R, C).End(xlDown).Offset(1)
End Sub
[/vba]

Автор - KSV
Дата добавления - 19.10.2015 в 09:09
OIU Дата: Понедельник, 19.10.2015, 14:41 | Сообщение № 11
Группа: Пользователи
Ранг: Новичок
Сообщений: 48
Репутация: 3 ±
Замечаний: 0% ±

Excel 2013
KSV, спасибо! Теперь всё работает как нужно. yes А можете к коду еще добавить комментарии (описания)? Хочу понять что за что отвечает и какие действия выполняет. Заранее спасибо! pray


С уважением Евгений Ковель
 
Ответить
СообщениеKSV, спасибо! Теперь всё работает как нужно. yes А можете к коду еще добавить комментарии (описания)? Хочу понять что за что отвечает и какие действия выполняет. Заранее спасибо! pray

Автор - OIU
Дата добавления - 19.10.2015 в 14:41
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Переход по динамической гиперссылке макросом (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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