По существу мой код просто находит определенную ячейку, содержащую координату индекса, предоставленную кнопкой Spin из формы. Это всего лишь сегмент всего кода, и весь код работал абсолютно отлично и был быстрым, прежде чем я снова открыл код сегодня утром, чтобы продолжить кодирование. Я ничего не изменил после того, как я сохранил последний раз, и через некоторую отладку я обнаружил, что метод .Find по какой-то причине ничего не возвращает, хотя данные есть и даже если я заполню весь столбец теми же данными он должен найти, он ничего не вернет. Таким образом, код дает:'.Find' метод просто ничего не возвращает
«объектная переменная или переменная блока не установлена»
каждый раз, когда он пытается использовать объект.
Set DR = Worksheets("Detalle - Reporte")
If spinCapituloVal.Value = 0 Then
MsgBox ("Por favor, introduce un capítulo válido")
Exit Sub
End If
With Columns(2)
Set Finder = .Find(spinCapituloVal.Value, LookIn:=xlValues, MatchCase:=False)
End With
If Finder Is Nothing Then
MsgBox ("No se encontró el capítulo especificado")
Exit Sub
End If
indiceCapActual = Finder.Value
indiceCapSiguiente = Finder.Offset(1, 0).Value
If indiceCapSiguiente = "" Then
With DR.Columns(1)
Set capActual = .Find(indiceCapActual, LookIn:=xlValues, MatchCase:=True)
Set capActualGuia = capActual.End(xlDown)
End With
Else
With DR.Columns(1)
Set capActual = .Find(indiceCapActual, LookIn:=xlValues, LookAt:=xlWhole, MatchCase:=True)
Set capSiguiente = .Find(indiceCapSiguiente, LookIn:=xlValues, LookAt:=xlWhole, MatchCase:=True)
End With
End If
Все, что я хочу знать, почему в мире метод .find просто перестал работать, и как я могу избежать этого в будущем?
change 'With Columns (2)' to 'With DR.Columns (2)'. –
Найти МЕДЛЕННО. Используйте Match вместо: https://fastexcel.wordpress.com/2011/10/26/match-vs-find-vs-variant-array-vba-performance-shootout/ –
Извините, что не уточнил; первый .Find работает просто отлично. это тот, который включает в себя другой лист, который вышел из ниоткуда. – zickens