我有一个执行以下过程的宏:
需要使用 Hyperlinks.Add 在“公司列表”工作表的 C 列中创建指向“公司名称”工作表的超链接。我相信我必须找到“公司列表”中插入的“公司名称”的地址,然后将该地址偏移到 C 列,然后使用调整后的地址创建超链接。我尝试的代码如下:
Sub Button1_Click()
Application.ScreenUpdating = False
Dim companyList As Worksheet
Dim companyName As Range
Dim companies As Range
Dim lPosition As Long
Dim companyNameAddress As Range
Dim companyOverview As Range
Set companyList = ActiveSheet
Set companies = companyList.Range("B5:B" & Rows.Count)
Set companyName = companyList.Range("C2")
If Not IsEmpty(companyName.Value) Then
lPosition = Application.WorksheetFunction.Match(CStr(companyName.Text), companies, 1)
companies(lPosition + 1).Insert
companies(lPosition + 1).Value = CStr(companyName.Text)
'*** CREATE NEW COMPANY SHEET ***
'--- Do Stuff ---
'*** FIND CELL ADDRESS OF NEW COMPANY IN COMPANIES ***
Set companyNameAddress = companyList.Range("B5:B" & Rows.Count).Find(CStr(companyName.Text), lookat:=xlPart)
Set companyOverview = companyNameAddress.Offset(0, 1)
'*** INSERT HYPERLINKS FOR COMPANY SHEETS ***
With companyList
Hyperlinks.Add Anchor:=.Range(companyOverview), _
Address:="", _
SubAddress:=" '" & CStr(companyName.Text) & "'!B2", _
TextToDisplay:="Overview"
End With
companyList.Range("C2").ClearContents
Else
MsgBox "Enter Company Name"
End If
Application.ScreenUpdating = True
End Sub
这会引发 1004 错误:对象“_Worksheet”的方法“Range”失败。如何找到超链接需要到达的位置,然后将该单元格(范围)插入到 Hyperlinks.Add 函数的锚点中?我认为这就是问题所在。
With companyList
.Hyperlinks.Add Anchor:=companyOverview, _
Address:="", _
SubAddress:="'" & companyName.Text & "'!B2", _
TextToDisplay:="Overview"
End With