Какую формулу я могу использовать для вставки x числа строк, где x – разница между двумя ответами на текстовые поля?

Я создаю пользовательскую форму, которая будет формировать шаблон отчета для пользователя.

Шаблон должен иметь определенное количество строк на основе «Дата начала» и «Дата окончания», о которой сообщает пользователь. Количество добавленных строк будет «Дата начала» минус «Дата окончания» плюс 1.

В настоящее время я только что вычислил код ниже, скопировав записанный макрос:

Worksheets(5).Rows("5:27").Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove 

В приведенном выше коде я могу оставить 5, так как он всегда будет местом начала строки дат начала. Однако 27 должна быть переменной.

Можно ли ввести переменную в диапазон рядов, который может вставить изменяющееся число строк (основанное на функции)? Есть ли другой код, который я должен использовать?

Любая помощь с этим будет принята с благодарностью!

И советы о том, какие имена я должен использовать для описания некоторых вещей, также будут полезны. Я новичок в VBA и не знаю синтаксиса слишком хорошо.

EDIT: ДОПОЛНИТЕЛЬНЫЕ ВОПРОСЫ

Спасибо @findwindow Я создал функцию DateDiff в модуле, поэтому я получаю необходимое количество строк. Функция ниже.

 Function NumberofRows(pDate1 As Date, pDate2 As Date) NumberofRows = DateDiff("d", pDate1, pDate2) + 1 End Function 

Я пытаюсь вернуть ответ из функции в код ниже. Я получаю сообщение об ошибке «Тип несоответствия». Можете ли вы сказать мне, что я неправильно кодирую, или если есть более простой способ сделать это. «SDI» и «EDI» называются ячейками, которые содержат даты начала и окончания.

 Private Sub InsertRows() Dim i As Integer i = NumberofRows("SDI", "EDI") Worksheets(5).Rows("5:" & i).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove End Sub 

Вышеприведенный код вводится в Userform, у меня есть Call.InsertRows в пределах другого элемента, который соответствует щелчку кнопки команды.

Огромное спасибо!!!

EDIT 2: Также, глядя на это. Я считаю, что мне нужно найти способ для вывода NumberofRows, чтобы определить, какая строка должна быть «i», а не только сама. Я предполагаю, что это будет «i + 5», так как это стартовая строка? или, возможно, просто измените функцию NumberofRows на DateDiff ("d", x, x) +6?

Вы передаете значение именованного диапазона в свою функцию, поэтому вам нужно передать их из вашего субполя как объекты диапазона, а не даты или строки, которые они просматривают, и, как следствие, несоответствие типов.

Затем при вычислении того, как выстроить количество строк для вставки, вам нужно добавить значение i в свой нижний номер строки, чтобы получить номер вашей верхней строки, чтобы вы выбрали все строки внутри.

Что-то вроде этого должно работать:

 Private Sub InsertRows() Dim i As Integer i = NumberofRows(Range("SDI"), Range("EDI")) Worksheets(5).Rows("5:" & 5 + i).Insert Shift:=xlDown End Sub 

а также

 Function NumberofRows(pDate1 As Date, pDate2 As Date) NumberofRows = DateDiff("d", pDate1, pDate2) + 1 End Function 
  • Оптимизировать код для цикла для более чем 100 000 строк
  • выбор второй строки текущей строки excel vba
  • VBA (Excel): получить последнюю непустую строку в диапазоне
  • как использовать макрос для переноса данных из строк в столбцы
  • Скопировать значения из строки в другую книгу VBA
  • Удаление уникальных строк в файле Excel
  • Перемещение строк выше в пробелы ниже
  • Перемещение строки в конец другого на основе определенных условий
  • Суммируйте все слева
  • Если ячейка пуста, скройте следующие n строк, VBA
  • Возьмите значение ячейки и добавьте, что много строк ниже
  • Давайте будем гением компьютера.