Переменная объекта или с не заданной переменной блока (Ошибка 91)
У меня есть следующий код:
Sub AddSources()
Dim pubPage As Page
Dim pubShape As Shape
Dim hprlink As Hyperlink
Dim origAddress() As String
Dim exportFileName As String
exportFileName = "TestResume"
Dim linkSource As String
linkSource = "TestSource2"
Dim hyperLinkText As TextRange
For Each pubPage In ActiveDocument.Pages
For Each pubShape In pubPage.Shapes
If pubShape.Type = pbTextFrame Then
For Each hprlink In pubShape.TextFrame.TextRange.Hyperlinks
If InStr(hprlink.Address, "http://bleaney.ca") > 0 Then
hyperLinkText = hprlink.Range
origAddress = Split(hprlink.Address, "?source=")
hprlink.Address = origAddress(0) + "?source=" + linkSource
hprlink.Range = hyperLinkText
End If
Next hprlink
End If
Next pubShape
Next pubPage
ThisDocument.ExportAsFixedFormat pbFixedFormatTypePDF, "C:\" + exportFileName + ".pdf"
End Sub
Я получаю ошибку "Объектная переменная или с переменной блочной переменной (Ошибка 91)" в строке с hyperLinkText = hprlink.Range
. Когда я отлаживаю, я вижу, что hprlink.Range
имеет значение. Любые мысли, что я делаю неправильно?
Ответы
Ответ 1
Как я писал в своем комментарии, решение вашей проблемы состоит в том, чтобы написать следующее:
Set hyperLinkText = hprlink.Range
Set
необходимо, потому что TextRange
является классом, поэтому hyperLinkText
является объектом; как таковой, если вы хотите назначить его, вам нужно указать его на фактический объект, который вам нужен.
Ответ 2
Я получаю ту же ошибку в моем коде, она прекрасно работает, когда я набираю "1", но когда вы вводите "2", она выполняет работу, которая перемещает строки на лист с именем "2", но не останавливается, кажется как он остается в цикле, пока я не нажму Esc, тогда ошибка появляется в строке
Loop While Not buscado Is Nothing And buscado.Address <> ubica
как я могу решить это?
Sub search()
Dim dato As String
Dim filallibre As String
dato = InputBox("Type 1 Or 2?")
filalibre = Sheets(dato).Range("A65000").End(xlUp).Row + 1
If dato = "" Then Exit Sub
Set buscado = ActiveSheet.Range("A1:A" & Range("A65000").End(xlUp).Row).Find(dato, LookIn:=xlValues, lookat:=xlWhole)
If Not buscado Is Nothing Then
ubica = buscado.Address
Do
buscado.EntireRow.Copy Destination:=Sheets(dato).Cells(filalibre, 1)
filalibre = filalibre + 1
Set buscado = ActiveSheet.Range("A1:A" & Range("A65000").End(xlUp).Row).FindNext(buscado)
Loop While Not buscado Is Nothing And buscado.Address <> ubica
End If
End Sub