2016-10-21 4 views
2

У меня есть UserForm Excel, который имеет около 15 полей (текстовые поля и выпадающие списки) и копирует данные на лист при нажатии кнопки. она имеет примерно время выполнения 15 мин и после пошагового единственных линий, которые имели заметное количество времени былоЕсть ли более быстрая альтернатива target.value = me.textbox.value?

With ws 
    .Unprotect Password:="password" 
    .Cells(iRow, 1).Value = Me.Textbox1.Value 
    .Cells(iRow, 1).Value = Me.time.Value 
    .Cells(iRow, 2).Value = Me.card.Value 
    .Cells(iRow, 1).Value = Me.nature.Value 
    .Cells(iRow, 2).Value = Me.ma.Value 
    .Cells(iRow, 1).Value = Me.mem1.Value 
    .Cells(iRow, 2).Value = Me.mem2.Value 
    .Cells(iRow, 3).Value = Me.mem3.Value 
    .Cells(iRow, 4).Value = Me.mem4.Value 
    .Cells(iRow, 5).Value = Me.mem5.Value 
    .Cells(iRow, 6).Value = Me.mem6.Value 
    .Cells(iRow, 7).Value = Me.mem7.Value 
    .Cells(iRow, 8).Value = Me.mem8.Value 
    .Cells(iRow, 9).Value = Me.mem9.Value 
    .Cells(iRow, 10).Value = Me.mem10.Value 
    .Protect Password:="password" 
End With 

каждый из копировальных линий занимает около 1 минуты, чтобы бежать. Я читал, что использование Value2 происходит быстрее, но это не делает заметной разницы.

В этом нет другого кода, и я отключил автоматическое обновление функций в ячейках.

+2

' Я отключил автоматическое обновление функций в ячейках' - вы имеете в виду, что вы переключили режим расчета на ручной? – GSerg

+3

Вы, кажется, переписываете ячейки, для начала. – Comintern

+0

У вас есть активные процедуры для работы с книгами/книгами? – h2so4

ответ

2

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

With ws 
    .Unprotect Password:="password" 

    .Cells(iRow, 1).Resize(1,10).Value = _ 
     Array(Me.mem1.Value, Me.mem2.Value, _ 
      Me.mem3.Value, Me.mem4.Value, _ 
      Me.mem5.Value, Me.mem6.Value, _ 
      Me.mem7.Value, Me.mem8.Value, _ 
      Me.mem9.Value, Me.mem10.Value) 

    .Protect Password:="password" 
End With 
Смежные вопросы