У меня есть подпрограмма, которая заполняет массив списком определенных пользователем значений из фиксированного диапазона в моей электронной таблице.Я хочу вызвать этот саб из другого, и использовать значения в массиве для запуска цикла For Each.
Когда я вызываю sub getInvoiceList
, я вижу, что он заполняет массив invoiceList
пользовательскими значениями.Но они не возвращаются в подводную лодку, с которой я звоню
Public Sub columnLoop()
Dim i As Long, j As Long
getInvoiceList
Stop 'to view array values
Sheets("Calculator").Columns(10).Font.Color = vbBlack
For i = 0 To UBound(invoiceList)
'Loops through column for specific value(as declared)
'Recolors text when current cell value = specific value
For j = 3 To Range("NumFilledRows").Value
If Sheets("Calculator").Cells(j, 10).Value = invoiceList(i) Then
Sheets("Calculator").Cells(j, 10).Font.Color = vbRed
End If
Next j
Next i
End Sub
'Fill array from fixed range
Public Sub getInvoiceList()
Dim invoiceList() As Variant
invoiceList = Sheet2.Range("C4:C14")
Stop 'allows review of array.
End Sub
Когда я вызываю sub 'getInvoiceList', я вижу, что он заполняет массив invoiceList значениями пользователя.Но они не возвращаются в подводную лодку, с которой я звоню
Run-time error '13': Type Mismatch
Отладка выводит меня на строку For i = 0 to UBound
.Окно Locals показывает invoiceList
, но имеет value = empty
как в строке Stop, так и после нажатия отладки.