У меня есть 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)
Я не понимаю почему, потому что я четко определил оба массива как варианты?