2015-11-10 5 views
0

По существу мой код просто находит определенную ячейку, содержащую координату индекса, предоставленную кнопкой 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 просто перестал работать, и как я могу избежать этого в будущем?

+0

change 'With Columns (2)' to 'With DR.Columns (2)'. –

+0

Найти МЕДЛЕННО. Используйте Match вместо: https://fastexcel.wordpress.com/2011/10/26/match-vs-find-vs-variant-array-vba-performance-shootout/ –

+0

Извините, что не уточнил; первый .Find работает просто отлично. это тот, который включает в себя другой лист, который вышел из ниоткуда. – zickens

ответ

0

Решение моей проблемы было очень неожиданным. Столбец, где я использовал метод .Find с capActual, не имел достаточной ширины, чтобы отображать его содержимое правильно, и это как-то остановило .Find от нахождения ячейки, содержащей это значение. Да. Ширина столбца.

Предоставляя колонке достаточно места для отображения содержимого, проблема решена.

Смежные вопросы