Похоже, что ОП является новым для VBA, поэтому перед комментариями к коду мы должны обсудить 4 вещи. Эти четыре вещи очень важны для начинающего VBA'ера, поскольку они значительно облегчают написание кода VBA.
Всегда, всегда, всегда указывайте опцию в начале каждый модуль / класс / форма.
Используйте F1. Если навести курсор на ключевое слово в IDE VBA и нажать клавишу F1, откроется страница справки MS для этого ключевого слова. Если вы выделите строку, выделенную желтым цветом, она платит за это для каждого ключевого слова в этой желтой строке.
Всегда компилируйте код перед тем, как запускать его. В VBA Ide используйте Debug.Project Compile для перехвата logi c и синтаксических ошибок, которые не были обнаружены явным параметром.
Установите fantasti c и бесплатное дополнение VBA Rubberduck . Среди множества своих талантов Rubberduck проведет более строгий анализ вашего кода и расскажет вам о предположениях, о которых вы даже не подозревали.
Теперь о коде.
Обычно в VBA Integer конвертируется в Long внутри, поэтому нет смысла объявлять переменные как Integer, а не long.
Для l oop - For = to
Итак
For zzz = 0 To zzz <= TaskNum
должно быть записано
For zzz = 0 To Tasknum
В исходной версии zzz <= Tasknum рассматривается как логическое выражение, результат которого будет приведен к -1 или 0. Таким образом, OP код, по сути, говорит: </p>
For zzz = 0 to -1
и, следовательно, циклы For никогда не будут выполняться.
Старайтесь использовать значимые имена переменных и особенно избегайте имен, которые по сути дублируют ключевые слова. например, myCell предпочтительнее, чем cel.
Всегда квалифицируйте ключевые слова Range, Cell с Workbook.Worksheet, к которому они принадлежат. Без такой квалификации вы ссылаетесь на активный лист, который может измениться без предупреждения и, следовательно, вызвать странные ошибки.