Как я могу записать в массив в oop? - PullRequest
0 голосов
/ 25 марта 2020

Я относительно новичок в VBA

Я думаю, что ошибка в моем синтаксисе.

Ниже приведена подпрограмма, над которой я работаю. массив "MyArray" всегда пуст. Я dim'd и redim'd и изменил тип и синтаксис на основе того, что я видел в Интернете в миллион раз, его всегда 0 или пусто. пожалуйста, помогите.

Sub CostPerTon()

Dim FeedType As String, count#, CostPerTon#

FeedType = "Duck - Comercial - Starter - 1 to 25 Days"

Sheets("Formulations").Activate

count = Application.WorksheetFunction.CountA(Range("A:A"))

i = 1

Dim IngredientCost As Double
Dim MyArray(100) As Variant


Do While i < count + 1

    IngredientCost = Application.WorksheetFunction.VLookup(FeedType, Range("1:1048576"), i + 2, 0) _
     * Worksheets("Costs").Cells(i + 2, 2) * (1 / 1000)
    MyArray(i) = IngredientCost

    i = i + 1


Loop


End Sub

переменная IngredientCost имеет значения, когда я циклически перебираю l oop, так что функция в порядке. Он разбивается на строку MyArray (i) = IngredientCost. он просто остается пустым

и счет 14

1 Ответ

0 голосов
/ 25 марта 2020

Проблема в том, какой столбец вы хотите вернуть в функции VLookup:

IngredientCost = Application.WorksheetFunction.VLookup(FeedType, Range("1:1048576"), i + 2, 0) _
 * Worksheets("Costs").Cells(i + 2, 2) * (1 / 1000)

последняя функция параметра, которую вы определили:

i + 2

, так что если вы найдете "Утка - Comercial - Starter - от 1 до 25 дней " например, в 25. row: -> i = 25 и Vlookup хочет вернуть 27-й столбец, который, вероятно, пуст.

Учтите, что:

IngredientCost = Application.WorksheetFunction.VLookup(FeedType, Range("1:1048576"),3, 0) _
 * Worksheets("Costs").Cells(i + 2, 2) * (1 / 1000)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...