我创建了一个函数,用于在工作簿中的工作表之间创建交叉引用超链接。由于某种原因,我在尝试创建超链接时收到错误 13:类型不匹配错误。
以下是创建超链接的函数:
公共函数 SearchAndLink(txtTicketNum 作为字符串、shtFromSheet 作为工作表、rngFromCell 作为范围、txtFromText 作为字符串、shtToSheet 作为工作表、txtToText 作为字符串、numFromOff 作为整数、numToOff 作为整数)作为布尔值 Dim rngToCell 作为范围 设置 rngToCell = shtToSheet.Cells.Find(What:=txtTicketNum) 如果 rngToCell 不为空则 Sheets(shtFromSheet).Hyperlinks.添加锚点:=rngFromCell.Offset(0,numFromOff),地址:=“”,SubAddress:= _ “'”&Sheets(shtToSheet)。名称&“'!”&rngToCell.Address,TextToDisplay:=txtFromText Sheets(shtToSheet).Hyperlinks.添加锚点:=rngToCell.Offset(0,numToOff),地址:=“”,SubAddress:= _ “'”&Sheets(shtFromSheet)。名称&“'!”&rngFromCell.Address,TextToDisplay:=txtToText rngToCell.EntireRow.Interior.ColorIndex = -4142 rngToCell.EntireRow.Font.Name =“Calibri” rngToCell.EntireRow.Font.Size = 11 SearchAndLink = True 别的 SearchAndLink = False 万一 结束函数
这是我创建变量并调用函数的地方:
公共子交叉引用() Dim strRORA 作为字符串 调光滑块作为范围 Dim boolFound 作为布尔值 '设置变量来检查 RO 与未结票据 设置 rngslider = Sheets("资源订单").Range("A4") Do While rngslider "" '当名称列有数据时继续 ' 设置变量来检查未结票据 strRORA = UCase(rngslider.Offset(0, 10).值) boolFound = SearchAndLink(strRORA, Sheets("资源订单"), rngslider, strRORA, Sheets("打开票证"), "RO", 10, 78)
我尝试手动输入工作表和范围来查找错误,但总是出现类型不匹配错误。我是否错误地使用了函数中的变量?任何帮助都将不胜感激。
答案1
我搞清楚了问题所在。我向函数传递了一个工作表对象,但超链接的方法需要指数对于工作表。我更改了函数以传递我正在使用的工作表的索引,然后它会创建超链接。
以下是新的函数调用:
boolFound = SearchAndLink(strRORA,Sheets("资源订单").Index, rngslider, "Closed", Sheets("已关闭的火灾单").Index, "RO", 11, 28)
以下是新功能:
公共函数 SearchAndLink(txtTicketNum 作为字符串、numFromSheet 作为整数、rngFromCell 作为范围、txtFromText 作为字符串、numToSheet 作为整数、txtToText 作为字符串、numFromOff 作为整数、numToOff 作为整数)作为布尔值
以下是正确的超链接代码:
Sheets(numFromSheet).Hyperlinks.添加锚点:=rngFromCell.Offset(0,numFromOff),地址:="", _ SubAddress:="'" & Sheets(numToSheet).Name & "'!" & rngToCell.Address, TextToDisplay:=txtFromText
谢谢!