Здравствуйте. Нужна Ваша помощь. Во вложении пример ввода данных. В рабочем листе около 6000 строк и данный код работает очень медленно. Помогите ускорить данный код или другое решение для данной задачи.
Здравствуйте. Нужна Ваша помощь. Во вложении пример ввода данных. В рабочем листе около 6000 строк и данный код работает очень медленно. Помогите ускорить данный код или другое решение для данной задачи.Amator
Я конечно не знаю высшей цели занесения в цикле одинаковых данных, да еще засунув внутрь цикла With - End With... Исходя из примера сделал бы так: [vba]
Код
Private Sub CommandButton1_Click() Dim iLastRow As Long Dim i As Long Dim stRow& With Sheets("Лист1") stRow = .Cells(Rows.Count, "Q").End(xlUp).Row + 1 iLastRow = stRow + 56 Range(.Cells(stRow, "B"), .Cells(iLastRow, "B")) = Me.TextBox71.Value Range(.Cells(stRow, "C"), .Cells(iLastRow, "C")) = Me.TextBox70.Value Range(.Cells(stRow, "E"), .Cells(iLastRow, "E")) = Me.ComboBox1.Value Range(.Cells(stRow, "F"), .Cells(iLastRow, "F")) = Me.ComboBox5.Value Range(.Cells(stRow, "G"), .Cells(iLastRow, "G")) = Me.ComboBox6.Value
' iLastRow = .Cells(Rows.Count, "Q").End(xlUp).Row + k ? ' .Cells(iLastRow, "C") = Me.TextBox70.Value ? .Cells(iLastRow, "Q") = Now End With End Sub
[/vba] Ну и да, обновление экрана и события(а если надо и пересчет) отключил бы.
Я конечно не знаю высшей цели занесения в цикле одинаковых данных, да еще засунув внутрь цикла With - End With... Исходя из примера сделал бы так: [vba]
Код
Private Sub CommandButton1_Click() Dim iLastRow As Long Dim i As Long Dim stRow& With Sheets("Лист1") stRow = .Cells(Rows.Count, "Q").End(xlUp).Row + 1 iLastRow = stRow + 56 Range(.Cells(stRow, "B"), .Cells(iLastRow, "B")) = Me.TextBox71.Value Range(.Cells(stRow, "C"), .Cells(iLastRow, "C")) = Me.TextBox70.Value Range(.Cells(stRow, "E"), .Cells(iLastRow, "E")) = Me.ComboBox1.Value Range(.Cells(stRow, "F"), .Cells(iLastRow, "F")) = Me.ComboBox5.Value Range(.Cells(stRow, "G"), .Cells(iLastRow, "G")) = Me.ComboBox6.Value
' iLastRow = .Cells(Rows.Count, "Q").End(xlUp).Row + k ? ' .Cells(iLastRow, "C") = Me.TextBox70.Value ? .Cells(iLastRow, "Q") = Now End With End Sub
[/vba] Ну и да, обновление экрана и события(а если надо и пересчет) отключил бы.KuklP
Ну с НДС и мы чего-то стoим! kuklp60@gmail.com WM Z206653985942, R334086032478, U238399322728
Сообщение отредактировал KuklP - Пятница, 24.04.2015, 12:17