Форум по VBA и MS Office

VBA, Excel => VBA, макросы в Excel => Тема начата: Посетитель от 23 марта 2021, 08:38

Название: Excel VBA Макросы. Почему макрос не может найти дубль?
Отправлено: Посетитель от 23 марта 2021, 08:38
Использую такой код для поиска дубля, но макрос почему-то не находит дубль, хотя он есть.
В чём может быть причина?

Макрос
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
[свернуть]
Название: Re: Excel VBA Макросы. Почему макрос не может найти дубль?
Отправлено: Администратор от 23 марта 2021, 08:52
В этой строке, вы ищите на листе "Архив", в столбце 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 для листа "Архив".
Название: Re: Excel VBA Макросы. Почему макрос не может найти дубль?
Отправлено: Посетитель от 23 марта 2021, 09:45
Большое спасибо! Ответом удовлетворен. Все работает.