Не уверен, что вы пытаетесь достичь.Если вы хотите вызвать «маленький» саб внутри другого сабвуфера, вы можете сделать это с помощью команды call:
Call NameOfSmallSub()
Таким образом, вы можете вызвать любое количество макросов в строке.
Несколько подсказок, чтобы ваш код заработал:
Каждая длинная переменная содержит значение 0 при инициализации (ваша команда Dim).Поэтому, когда вы назначаете StartDate для x сразу после инициализации, вы можете просто написать «x = 0».Поскольку после этого вы устанавливаете другое значение x без использования x между ними, это назначение вообще не требуется.
Кроме того, когда вы вычитаете 0 из числа, это не влияет на него.Поэтому вместо написания «Месяц (Дата) - 0» это будет точно такой же «Месяц (Дата)».Я не уверен, что вы ожидаете от возвращения DateSerial с днем "0".Я бы посоветовал вам отлаживать вашу строку кода построчно и наблюдать за всеми вашими переменными, чтобы увидеть, что на самом деле происходит.
Ваш цикл будет работать вечно, так как вы уменьшаете свою циклическую переменную x каждый раз.Ваша петля никогда не может достичь своего конца таким образом.Но для чего вам нужен ваш цикл?
Кажется, вы не знакомы со сценариями vba.Вероятно, вы можете достичь в Excel, что вы хотите, даже без сценариев VBA?Я хотел бы задать новый вопрос и описать, что я хочу, и попросить хороший способ достичь этого.
Надеюсь, это немного поможет.