在VBA用户表单查找中插入超链接

在VBA用户表单查找中插入超链接,vba,excel,hyperlink,userform,Vba,Excel,Hyperlink,Userform,我已经创建了一个userform,其中包括许多项。在另一个工作表中,我有一个带有特定URL的项目列表。我希望Userform为我插入超链接。我已经想出了下面的代码,当它不是irow的一部分时可以工作 我用下面的代码做了一个测试,效果非常好 Sub Hyperlinkstest() Dim rng As Range Dim ws As Worksheet Dim ws2 As Worksheet Set ws = Sheets("Sheet1") Set ws2 = Sheets("Sheet

我已经创建了一个userform,其中包括许多项。在另一个工作表中,我有一个带有特定URL的项目列表。我希望Userform为我插入超链接。我已经想出了下面的代码,当它不是irow的一部分时可以工作

我用下面的代码做了一个测试,效果非常好

Sub Hyperlinkstest()

Dim rng As Range
Dim ws As Worksheet
Dim ws2 As Worksheet

Set ws = Sheets("Sheet1")
Set ws2 = Sheets("Sheet2")
Set rng = ws.Range("B2")

rng.Parent.Hyperlinks.Add Anchor:=rng, Address:=Application.WorksheetFunction.VLookup(ws.Range("A2"), ws2.Range("A:B"), 2, False), TextToDisplay:="Info"

End Sub
然而,当我试图将它集成到我的用户表单中时,我发现几乎没有成功。有人能帮忙吗?我遇到的问题是编写代码。这意味着我的ws.cells行(iRow,4.Value=。。。具有预期的语句结尾。我确信我只是忽略了这里的一些东西,需要一双新的眼睛

Private Sub CommandButton1_Click()

Dim iRow As Long
Dim ws As Worksheet
Dim ws2 As Worksheet
Dim rng As Range

Set ws = Worksheets("Database")
Set ws2 = Worksheets("LookupVals")
Set rng = ws.Cells(iRow, 4)

iRow = ws.Cells.Find(what:="*", SearchOrder:=xlRows, _
    SearchDirection:=xlPrevious, LookIn:=xlValues).Row + 1

    If RmRef.Value = "" Then
        RmRef.SetFocus
            MsgBox "Please Enter Room Reference"
        Exit Sub
    End If

    ws.Cells(iRow, 2).Value = RmRef.Value
    ws.Cells(iRow, 3).Value = RetMod.Value
    ws.Cells(iRow, 4).Value = rng.Parent.Hyperlinks.Add Anchor:=rng, Address:=WorksheetFunction.VLookup(RetMod.value, ws2.Range("A:B"), 2, False), TextToDisplay:="Info"
    ws.Cells(iRow, 5).Value = OdCd.Value
    ws.Cells(iRow, 6).Value = hmm.Value
    ws.Cells(iRow, 7).Value = lmm.Value
    ws.Cells(iRow, 8).Value = rdtyp.Value
    ws.Cells(iRow, 9).Value = dtt.Value
    ws.Cells(iRow, 10).Value = Wts.Value
    ws.Cells(iRow, 11).Value = Qt.Value
    ws.Cells(iRow, 12).Value = LP.Value
    ws.Cells(iRow, 13).Value = Dc.Value
    ws.Cells(iRow, 14).Value = TP.Value

    'clear the data
    RmRf.Value = ""
    Rdd.Value = ""
    OdCd.Value = ""
    hmm.Value = ""
    lmm.Value = ""
    rdtyp.Value = ""
    dtt.Value = ""
    Wts.Value = ""
    Qt.Value = ""
    LP.Value = ""
    Dt.Value = ""
    TTpr.Value = ""

End Sub

您需要在
rng.Parent.Hyperlinks之后包含所有内容。将
添加到括号
()
中,如
rng.Parent.Hyperlinks.Add(锚定:=rng,…)
。提交给函数的参数需要放在括号中,除非您不希望返回值。注意:我对这个问题投了赞成票,只是因为印刷错误。@Peh谢谢你。这是一种享受。我很好奇为什么它需要括号,但是在我的有效测试中,我不需要括号?在你的测试中,你不希望从
.add()
函数得到结果,你只需要调用函数->没有括号。但是在您的
命令中,单击
可以得到
.add()
的结果,该结果保存在
ws.Cells(iRow,4)中。Value
然后->括号中。