Excel VBA: Criando incompatibilidade de tipo de hiperlinks

0

Eu criei uma função para criar hiperlinks de referência cruzada em uma pasta de trabalho entre planilhas. Por algum motivo eu estou recebendo erro 13: Erro de incompatibilidade de tipo quando ele tenta criar o hiperlink.

Aqui está a função para criar os hiperlinks:

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

E aqui é onde eu crio as variáveis e chamo a função:

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)

Eu tentei inserir a planilha e o intervalo manualmente para encontrar o erro, mas sempre recebo um erro de incompatibilidade de tipo. Estou usando as variáveis na função incorretamente? Qualquer ajuda seria muito apreciada.

    
por SolarGlare 30.08.2016 / 21:08

1 resposta

0

Eu descobri qual era o problema. Eu estava passando um objeto de planilha para a função, mas o método para hiperlinks precisa do índice para uma planilha. Eu mudei a função para passar o índice das planilhas com as quais estou trabalhando, e isso cria os hyperlinks.

Aqui está a nova chamada de função:

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

Aqui está a nova função:

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

E aqui está o código de hiperlink correto:

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

Obrigado!

    
por 30.08.2016 / 23:03