VBAsearch并创build一个超链接

好吧,我有两个工作表在我的excel文件,头文件和信息,都是通过部分和然后分部(albiet有点不同。头部有第7部分第1部分,而信息部分7.01和子部分X)。 所以我现在有我的代码设置search正确的部分(我通过debugging知道这一点),但根据我如何改变Searcha和CreateHyperlink函数我得到一个运行时5错误(用于创build超链接)或1094 ? 我想…从我有这个错误已经有一段时间了,如果我find一个方法来重现它,我会更新。

这是错误的具体地点:

rownumber = Range("A:A").Find(search) Sheets("Headers").Hyperlinks.Add Sheets("Headers").Cells(i, 3), "", Sheets("Info").Cells(rownumber, 1), "", link 

这是其他的一切:

 'Create new Hyperlinks Dim i As Integer i = 18 Dim link As String Dim section As String Dim subsectiona As Integer Dim subsection As String Dim search As String Dim rownumber As Integer section = 0 subsection = 0 subsectiona = 0 Sheets("Headers").Select Do While Cells(i, 3).Value <> "" link = Cells(i, 3).Value section = Cells(i, 1).Value subsectiona = Cells(i, 2).Value If subsectiona = 0 Then subsectiona = "1" End If If subsectiona < 10 Then subsection = "0" & subsectiona Else subsection = subsectiona End If search = section & "." & subsection Sheets("Info").Select rownumber = Range("A:A").Find(search) Sheets("Headers").Hyperlinks.Add Sheets("Headers").Cells(i, 3), "", Sheets("Info").Cells(rownumber, 1), "", link i = i + 1 Loop 

到目前为止,它产生的运行时错误5代码和rownumber显示为7,当它应该是2.以下是头文件的样子:

 Section Subsection Link Description 7 1 Link Links to 7.01 7 2 Link Links to 7.02 

和信息文件:

 Section Subsection Type Name Description 7.01 1 Blah Blah Blah 7.01 2 Blah Blah Blah 7.02 1 Blah Blah Blah 

因此,在这种情况下,来自Headers的单元格C2中的单词“link”的超级链接导致Info的单元格A2,并且Header的单元格C3中的单词“link”导致Info的单元格A4。

任何想法,以什么是错的?

这应该让你修好。

  1. 你的查找返回一个范围,从那里你可以得到你的行号。

  2. 但是,你也在跳板之间的这是至关重要的。

  3. 而你正在创build的超链接将不会像其他表单一样。

     Sub test() Dim i As Integer i = 2 Dim link As String Dim section As String Dim subsectiona As Integer Dim subsection As String Dim search As String Dim rownumber As Integer Dim findResult As Range section = 0 subsection = 0 subsectiona = 0 Sheets("Headers").Select Do While Cells(i, 3).Value <> "" rownumber = 0 link = Cells(i, 3).Value section = Cells(i, 1).Value subsectiona = Cells(i, 2).Value If subsectiona = 0 Then subsectiona = "1" End If If subsectiona < 10 Then subsection = "0" & subsectiona Else subsection = subsectiona End If search = section & "." & subsection Set findResult = Range("Info!A1:A10000").Find(What:=search, LookIn:=xlValues, MatchCase:=False, SearchFormat:=False) If Not findResult Is Nothing Then rownumber = findResult.Row Sheets("Headers").Hyperlinks.Add Sheets("Headers").Cells(i, 3), "", Sheets("Info").Name & "!A" & rownumber, "", link End If i = i + 1 Loop End Sub 

编辑:我最终改变了一点,从我原来的devise。 现在,而不是基于数据的位置创build超链接我有一个macros集刷新链接(用于添加新的部分时)和一个Worksheet_FollowHyperlink事件,基于单击链接sorting信息表。 这是我的最终代码:

刷新链接macros:

 Sub Button1_Click() Dim i As Integer i = 17 Dim link As String section = 0 subsection = 0 subsectiona = 0 Sheets("Headers").Select Do While Cells(i, 3).Value <> "" link = Cells(i, 3).Value Sheets("Headers").Hyperlinks.Add Sheets("Headers").Cells(i, 3), "", Sheets("Info").Name & "!A2", "", link i = i + 1 Loop End Sub 

以下是我在Headers工作表上的事件代码:

 Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink) Dim section As String Dim subsectiona As Integer Dim subsection As String Dim Row As Integer Dim addressa As Range Set addressa = Target.Range Row = addressa.Row section = Cells(Row, 1).Value subsectiona = Cells(Row, 2).Value If subsectiona = 0 Then subsectiona = "1" End If If subsectiona < 10 Then subsection = "0" & subsectiona Else subsection = subsectiona End If search = section & "." & subsection ActiveSheet.Range("$A$1:$M$741").AutoFilter Field:=1, Criteria1:=search End Sub 

非常感谢您的帮助!

Find()返回一个范围,而不是行号:

 Sheets("Headers").Hyperlinks.Add Sheets("Headers").Cells(i, 3), _ "", Sheets("Info").Cells(rownumber, 1), "", link 

应该

 Sheets("Headers").Hyperlinks.Add Sheets("Headers").Cells(i, 3), _ "", rownumber, "", link 

还应该添加一个检查,以确保该名词实际上被发现 – 否则rownumber将是没有