Перевести формулу в VBA - PullRequest
       3

Перевести формулу в VBA

0 голосов
/ 24 октября 2018

Я перевел эту формулу в VBA для использования в качестве переменной с методом FollowHyperlink:

=SUBSTITUTE(INDEX(Sites[Base], MATCH([@Site], Sites[Site], 0)), "*", [@Variable])

Как я могу сослаться на Selection.Offset(0, -1) по имени столбца (в случае изменения структуры таблицы)?

Dim sSite As String
If Not Intersect(Target, tb.ListColumns("Variable").DataBodyRange) Is Nothing Then
    Cancel = True
    sSite = WorksheetFunction.Substitute(WorksheetFunction.Index(Range("Sites[[Base]]") _
    , WorksheetFunction.Match(Selection.Offset(0, -1), Range("Sites[[Site]]"), 0)), "*", "" & ActiveCell.Value & "")
    ThisWorkbook.FollowHyperlink (sSite)
End If

Кроме того, как я могу справиться со случаем, когда нет сайта?Это не ограничено столбцом Переменная:

If Intersect(Target, tb.ListColumns("Variable").DataBodyRange) <> "" And Selection.Offset(0, -1) <> "" Then

1 Ответ

0 голосов
/ 24 октября 2018

Вы можете записать его, чтобы создать код VBA в вашем макросе.Сначала отрежьте формулу, затем нажмите «Запись» на вкладке «Разработчик» и вставьте формулу обратно.Остановите запись и нажмите Visual Basic, в Module1 вы увидите сгенерированный код с именем метода Macro1.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...