Использую такой код для поиска дубля, но макрос почему-то не находит дубль, хотя он есть.
В чём может быть причина?
Макрос
Public Sub Макрос()
Dim rFound As Excel.Range, nom
' Запись в переменную искомого текста из листа "Расход".
With ThisWorkbook.Sheets("Расход")
nom = .Range("D2")
End With
' Поиск дубля на листе "Архив".
With ThisWorkbook.Sheets("Архив")
On Error Resume Next
Set rFound = Columns(11).Find(What:=nom, LookIn:=xlFormulas, LookAt:=xlWhole)
On Error GoTo 0
If Not rFound Is Nothing Then
MsgBox "Такой номер : " & Range("d2").Text & "-уже есть!" & Chr(13) & " Соизвольте написать другой.", 48, "Ошибка"
Exit Sub
End If
End With
End Sub
В этой строке, вы ищите на листе "Архив", в столбце 11, искомый текст:
Set rFound = Columns(11).Find(What:=nom, LookIn:=xlFormulas, LookAt:=xlWhole)
Когда макрос запущен, активный лист "Расход". Активный лист - это лист, который отображается на мониторе.
Columns(11) - это столбец 11 на активном листе. Если перед Columns ничего не указано, то подразумевается активный лист.
Правильно так:
Set rFound = .Columns(11).Find(What:=nom, LookIn:=xlFormulas, LookAt:=xlWhole)
Т.е. надо спереди подставить точку. Вы используете With ... End With для листа "Архив".
Большое спасибо! Ответом удовлетворен. Все работает.