vba, если инструкция возвращает ошибку объекта или переменная блока не установлена - PullRequest
0 голосов
/ 12 марта 2020

Может кто-нибудь, пожалуйста, помогите мне понять, почему мое заявление If возвращает эту ошибку и как лучше выполнить намеченную задачу?

Цель этого Sub состоит в том, чтобы скопировать записи компании / продажи из листа src на лист des, но там, где есть несколько записей для компании, я хочу суммировать продажи и иметь только одну запись на des. он делает это, сначала выбирая название компании из src, а затем проверяя, существует ли оно в des.

Sub populate_sales()
    slr = src.Range("A" & Rows.Count).End(xlUp).row

    For r = 2 To slr
        dlr = des.Range("A" & Rows.Count).End(xlUp).row
        c_name = src.Range("M" & r).Value
        Dim d_names As Range
        Set d_names = des.Range("A1", des.Range("A" & dlr + 1))

        If d_names.Find(c_name) = False Then
            ' start the summing + writing process
        Else
            ' skip to next next record
        End If
    Next
End Sub

для записи, хотя вы видите только d_names, определенный здесь, все переменные определено, я просто делаю это глобально для тех, кто используется несколькими подводными лодками. на самом деле, пока c_name уже существует в диапазоне d_names, оператор If работает и переходит к следующей компании. однако если компания не существует в d_names, то возвращается ошибка, выделяющая If d_names.Find(c_name) = False Then.

, любая помощь, которую может предложить сообщество, будет принята с благодарностью.

1 Ответ

2 голосов
/ 12 марта 2020

Это поможет вам понять Find Method

Sub populate_sales()

    Dim rngFound As Range, rngSearchIn As Range
    Dim strSearchFor As String

    With ThisWorkbook.Worksheets("Sheet1")

        'Set the value you want to search for
        strSearchFor = "Test"

        'Set the range you want to search in
        Set rngSearchIn = .Range("A1:A5")

        Set rngFound = rngSearchIn.Find(strSearchFor, LookIn:=xlValues, Lookat:=xlWhole)

        If rngFound Is Nothing Then
            MsgBox "Values not found."
        Else
            MsgBox "Values found."
        End If

    End With

End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...