Excel VBA: пользовательская функция не работает

#excel #vba

#excel #vba

Вопрос:

Я работаю над разработкой пользовательской функции, которая поможет собрать более подробную информацию из набора данных. У меня есть excel, распознающий, что функция существует, она позволяет мне вводить мои параметры, но она дает мне ЗНАЧЕНИЕ #! ошибка.

Я подозреваю, что это может быть связано с некоторыми массивами и тем, как я пытаюсь собрать данные для отображения.

У меня есть 2 таблицы: основная таблица данных и таблица вызовов, которая содержит дополнительные данные, которые я пытаюсь собрать.

Я смотрю, сколько «слотов» занимает каждый элемент, в зависимости от времени его запуска и продолжительности. Я попытался использовать цикл Do Until, чтобы заполнить массив «слотами», которые занимает элемент, и затем отобразить этот список в выходной ячейке функции. Не стесняйтесь игнорировать мои комментарии.

  Function SlotsOccupied(Duration, StartTime, Day)


    Dim SlotsUsed() As String
    ReDim SlotsUsed(0 To Duration)  'sets SlotsUsed array size
    Dim StartT(0 To 1)    'sets Array StartT
    Dim StarTarr As Variant
    Dim DurCount as Integer
    Dim SlotCount as Integer
    Dim StartTCount as Integer


                                      'Sets Counts and starting variables
    DurCount = 0
    SlotCount = 0
    StartTCount = StartTime


    StartT(0) = Day                 'sets StartT array values
    StartT(1) = StartTime


    Do Until DurCount = Duration

        StartTarr = Join(StartT, ",")

        Slot = Application.WorksheetFunction.VLookup(StarTarr, Slots.Range("a2:b56"), 2, False)

        SlotsUsed(SlotCount) = Slot

        DurCount = DurCount   1
        StartTCount = StarTCount   1
        SlotCount = SlotCount   1

    Loop

    SlotsOccupied = Join(SlotsUsed, ",")
  

Любая помощь была бы весьма признательна, я довольно долго не занимался кодированием, и я чувствую ржавчину в своем мозгу.

Заранее спасибо.

Ответ №1:

Вы никогда не затемняете свои переменные durcount, slotcount или starttcount.

Комментарии:

1. Спасибо за это! Я чувствую себя дураком из-за того, что не сделал этого изначально. Я исправил это сейчас, но все еще получаю ошибку значения. Остальная часть кода выглядит нормально?

2. Пожалуйста, обновите свой исходный пост, чтобы включить обновленный код. А вы пробовали вручную перебирать свой код? Это может помочь вам в отладке.