Я создал функцию для создания гиперссылок в рабочей книге между рабочими листами. По какой-то причине я получаю ошибку 13: Ошибка несоответствия типов при попытке создать гиперссылку.

Вот функция для создания гиперссылок:

Public Function SearchAndLink(txtTicketNum As String, shtFromSheet As Worksheet, rngFromCell As Range, txtFromText As String, shtToSheet As Worksheet, txtToText As String, numFromOff As Integer, numToOff As Integer) As Boolean

Dim rngToCell As Range

Set rngToCell = shtToSheet.Cells.Find(What:=txtTicketNum)

If Not rngToCell Is Nothing Then
    Sheets(shtFromSheet).Hyperlinks.Add anchor:=rngFromCell.Offset(0, numFromOff), Address:="", SubAddress:= _
        "'" & Sheets(shtToSheet).Name & "'!" & rngToCell.Address, TextToDisplay:=txtFromText

    Sheets(shtToSheet).Hyperlinks.Add anchor:=rngToCell.Offset(0, numToOff), Address:="", SubAddress:= _
        "'" & Sheets(shtFromSheet).Name & "'!" & rngFromCell.Address, TextToDisplay:=txtToText

    rngToCell.EntireRow.Interior.ColorIndex = -4142
    rngToCell.EntireRow.Font.Name = "Calibri"
    rngToCell.EntireRow.Font.Size = 11

    SearchAndLink = True
Else
    SearchAndLink = False
End If

End Function

И вот где я создаю переменные и вызываю функцию:

Public Sub CrossReference()
Dim strRORA As String
Dim rngslider As Range
Dim boolFound As Boolean

'Set variables to check RO's versus open tickets
Set rngslider = Sheets("Resource Orders").Range("A4")

Do While rngslider  "" 'continue while the name column has data

    ' set variables to check open tickets
    strRORA = UCase(rngslider.Offset(0, 10).Value)

    boolFound = SearchAndLink(strRORA, Sheets("Resource Orders"), rngslider, strRORA, Sheets("Open Tickets"), "RO", 10, 78)

Я попытался ввести лист и диапазон вручную, чтобы найти ошибку, но я всегда получаю ошибку несоответствия типов. Я использую переменные в функции неправильно? Любая помощь будет наиболее ценной.

1 ответ1

0

Я понял, в чем проблема. Я передавал объект листа в функцию, но для метода гиперссылок нужен индекс для листа. Я изменил функцию, чтобы передать индекс рабочих листов, с которыми я работаю, и он создает гиперссылки.

Вот новый вызов функции:

 boolFound = SearchAndLink(strRORA, Sheets("Resource Orders").Index, rngslider, "Closed", Sheets("Closed Fire Tickets").Index, "RO", 11, 28)

Вот новая функция:

Public Function SearchAndLink(txtTicketNum As String, numFromSheet As Integer, rngFromCell As Range, txtFromText As String, numToSheet As Integer, txtToText As String, numFromOff As Integer, numToOff As Integer) As Boolean

И вот правильный код гиперссылки:

Sheets(numFromSheet).Hyperlinks.Add anchor:=rngFromCell.Offset(0, numFromOff), Address:="", _
        SubAddress:="'" & Sheets(numToSheet).Name & "'!" & rngToCell.Address, TextToDisplay:=txtFromText

Спасибо!

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .