Создание сокращенного списка для зависимого раскрывающегося списка в пользовательской форме - PullRequest
0 голосов
/ 17 марта 2020

У меня есть 3 столбца в электронной таблице, они включают в себя список названий компаний (где могут быть дубликаты названий, т. Е. Компания может иметь более одного сайта), сокращенный список названий компаний (список без дубликатов). ) и, наконец, название сайта компании.

Все больше компаний и сайтов постоянно вводятся, и поэтому они должны быть динамичными c. Каждая запись имеет собственное название сайта и название компании.

Это код, который я создал до сих пор;

Function FindLoop(Inputarr, val, ExistingArr) As Boolean
    Dim r As Long, c As Long
    Dim NewArr() As Variant
    Dim U As Integer
    Dim ExsistingArr As Variant

    For r = 1 To UBound(Inputarr, 1)
    For c = 1 To UBound(Inputarr, 2)
        If Inputarr(r, c) = val Then
        U = 1
        ReDim NewArr(1 To U + 1)
        Set NewArr(UBound(NewArr)) = ExistingArr(r, c)

        Exit Function
        End If
    Next c
    Next r
    NewArr = ShortnedArr
End Function


Sub FindList()
    Dim CompanyArray As Variant
    Dim SiteNames As Variant
    Dim SelectedCompany As String
    Dim SiteNamesShort As Variant

    CompanyArray = Range("Company_Names_Full")
    SiteNames = Range("Company_Site_Name")
    SelectedCompany = "Google"

    Call FindLoop(CompanyArray, SelectedCompany, SiteNames)

MsgBox (ShortnedArr)

End Sub

Я выбрал этот маршрут, потому что оригинальный метод, который я использовал, означал, что мне пришлось сортировать названия компаний в алфавитном порядке. Я хочу избежать этого, так как у меня есть другой модуль, который заполняет 3 столбца через userfrom.

Цель состоит в том, чтобы создать список названий сайтов, который варьируется в зависимости от выбора предыдущего выпадающего списка (список названий компаний без дубликатов). Я пытаюсь создать список имен сайтов, используя приведенный выше код, чтобы ограничить параметры, отображаемые для пользователя в пользовательской форме.

Проблема, с которой я сталкиваюсь, заключается в том, что я получаю несоответствие типов в следующей строке;

Set NewArr(UBound(NewArr)) = ExistingArr(r, c)

Я не понимаю почему, потому что я четко определил оба массива как варианты?

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