здесь функция validation_check
возвращает ошибку неверного назначения свойства (код 450). когда я не использую ключевое слово set, он возвращает ошибку от validate_check = finalCollection
, а когда я использую ключевое слово set, он выделяет cellArray = validation_check(cellArray, C_VAL_LIST_KW)
ie, откуда я вызываю функцию. Вот код
Подпрограмма, в которой я вызываю функцию
Sub validate_list()
Call declare_vars
validationRange.Select
Dim rng As Range
Dim colStartCell As Range
Dim colEndCell As Range
Dim cNum As Integer
Dim cellArray
Dim n As Integer
Dim msgboxString As String
n = 0
For Each cell In Application.Selection
If 0 < InStr(UCase(cell), UCase(C_VAL_LIST_KW)) Then
cNum = cell.Column
Set colStartCell = Cells(firstDataRangeRow, cNum)
'MsThgBox colStartCell.Address
Set colEndCell = Cells(dataLastRowNum, cNum)
'MsgBox colEndCell.Address
Set rng = Range(colStartCell, colEndCell)
cellArray = split_array(cell)
cellArray = validation_check(cellArray, C_VAL_LIST_KW)
...
...
End Sub
Функция разделения массива возвращает массив, поэтому проблема не в том, что l ie там
проверить функцию проверки:
Option Explicit
Public Function validation_check(arr, metaTag) As Collection
Dim newCollection As New Collection
Dim finalCollection As New Collection
Dim arraySize As Integer
Dim i As Integer
Dim val_index As Integer
arraySize = UBound(arr) - LBound(arr) + 1
For i = 0 To arraySize - 1
If arr(i) = metaTag Then
val_index = i
Exit For
End If
Next
For i = val_index To arraySize - 1
newCollection.Add (arr(i))
Next
For i = 1 To newCollection.Count
If InStr(1, newCollection(i), "#") <> 1 Then
finalCollection.Add (newCollection(i))
End If
Next
Set validation_check = finalCollection
End Function
Функция разделения массива
Public Function split_array(cell)
Dim arr1, arraySize
arr1 = Split(cell.Value, ",")
arraySize = UBound(arr1) - LBound(arr1) + 1
For i = 0 To arraySize - 1
arr1(i) = Trim(arr1(i))
Next i
split_array = arr1
End Function