将公式转换为VBA

时间:2018-10-24 00:28:10

标签: excel vba excel-formula

我已将此公式转换为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 :(得分:-1)

您可以记录它以在宏中创建vba代码。首先剪切公式,然后在“开发人员”选项卡中单击“记录”,然后将公式粘贴回去。停止录制,然后单击Visual Basic,在Module1中,您将看到带有方法名称jstl.jar的生成的代码。