Я новичок в сценариях VBA и пытаюсь создать макрос, который вычисляет налоговые компоненты (Federal, State et c.), Взяв в качестве входных данных TaxableIncome и имя налогового компонента. Я заполняю налоговые скобки в виде именованного диапазона на листе «Данные». Я объявил пользовательский тип данных TaxBracket для представления налоговой скобки. В качестве первого шага я хочу прочитать данные из именованного диапазона в рабочем листе «Данные» в массив «taxBrackets» для дальнейшей обработки. Странно, это выдает ошибку, когда я пытаюсь присвоить значения полям типа данных. Может кто-нибудь сказать мне, что здесь не так !!
Type TaxBracket
low As Single
high As Single
rate As Single
End Type
Function calculateTaxComponent(component As String, taxable_income As Variant) As Single
Dim taxBrackets() As TaxBracket, overflow_income As Single, tax As Single
Dim namedRange As Variant
namedRange = Range("Data!US_FEDERAL_TAX_RATES").Value
ReDim taxBrackets(1 To UBound(namedRange, 1))
For i = LBound(taxBrackets) To UBound(taxBrackets)
With taxBrackets(i)
.low = CSng(namedRange(i, 1)) '<---- gives an Runtime(6) overflow error
.high = CSng(namedRange(i, 2))
.rate = CSng(namedRange(i, 3))
End With
Next i
'.....................
'.....................
'.................
calculateTaxComponent = tax
End Function