Таблица Excel не расширяется при запуске кода VBA, но расширяется при вводе любой буквы под ней

Я использую этот код для копирования моего кода из другой книги в другую:

Dim PayMR_Data_Columns As Long, sourcePayMR As Range

PayMR_Data_Columns = ThisWorkbook.Worksheets("Pay-MR").Cells(1, Columns.Count).End(xlToLeft).Column
Set sourcePayMR = ThisWorkbook.Worksheets("Pay-MR").Range("A2:" & Col_Letter(PayMR_Data_Columns) & Total_rows_PayMR)

'Copies value from source to Payroll Data
With Workbooks("Payroll Data.xlsm").Worksheets("Pay-MR Compiled").Range("A" & Total_rows_PayMRCompiled + 1 & ":" & Col_Letter(PayMR_Data_Columns) & Total_rows_PayMRCompiled + Total_rows_PayMR - 1)
    .Value = sourcePayMR.Value
End With

Пожалуйста, обратитесь к изображению ниже:

введите здесь описание изображения

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

введите здесь описание изображения


person Pherdindy    schedule 10.10.2018    source источник


Ответы (1)


VBA не расширяет таблицу автоматически.

Вам нужно добавить строку в таблицу, прежде чем записывать в нее данные:

ActiveSheet.ListObjects("Table1").ListRows.Add

Также посмотрите мой ответ здесь и Руководство VBA по таблицам ListObject Excel для получения дополнительной информации о том, как обрабатывать таблицы в Excel с помощью VBA.

person Pᴇʜ    schedule 10.10.2018
comment
Спасибо. Хотя мне интересно, почему мои другие рабочие листы расширяются с использованием одного и того же кода VBA? До запуска кода нет пустых строк таблицы, но они создают свои собственные строки. - person Pherdindy; 10.10.2018
comment
@Pherdindy У меня было похожее странное поведение с автоматическим (не) расширением таблиц в Excel. Я не буду полагаться на это. В любом случае добавление новой строки перед ее использованием было бы хорошей идеей и стабильным процессом, на который можно положиться. - person Pᴇʜ; 10.10.2018
comment
Поэтому я фактически удалил всю таблицу и создал другую с теми же заголовками и именем таблицы, и теперь код автоматически расширяет ее, как и другие. Полностью запутался, но приятно знать о манипуляциях с таблицами в справочнике. - person Pherdindy; 10.10.2018
comment
@Pherdindy Я тоже так делал. Но позже он снова перестал работать (так и не узнал почему, думаю, это просто ошибка). Таким образом, самостоятельное добавление строки делает ее безопасной, и вам больше никогда не придется об этом думать. - person Pᴇʜ; 10.10.2018
comment
@Pᴇʜ У меня не было такой проблемы, но ваш совет по добавлению новой строки перед ее использованием является примером кодирования ожидаемых или возможных ошибок. Я обязательно буду использовать его при добавлении данных ниже таблиц. - person Mark Fitzgerald; 10.10.2018