Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Ввод данных с формы. - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Ввод данных с формы. (Макросы/Sub)
Ввод данных с формы.
Amator Дата: Пятница, 24.04.2015, 11:10 | Сообщение № 1
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 107
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Здравствуйте. Нужна Ваша помощь. Во вложении пример ввода данных. В рабочем листе около 6000 строк и данный код работает очень медленно. Помогите ускорить данный код или другое решение для данной задачи.
К сообщению приложен файл: _..xlsm (43.6 Kb)
 
Ответить
СообщениеЗдравствуйте. Нужна Ваша помощь. Во вложении пример ввода данных. В рабочем листе около 6000 строк и данный код работает очень медленно. Помогите ускорить данный код или другое решение для данной задачи.

Автор - Amator
Дата добавления - 24.04.2015 в 11:10
KuklP Дата: Пятница, 24.04.2015, 12:15 | Сообщение № 2
Группа: Проверенные
Ранг: Старожил
Сообщений: 2369
Репутация: 486 ±
Замечаний: 0% ±

2003-2010
Я конечно не знаю высшей цели занесения в цикле одинаковых данных, да еще засунув внутрь цикла 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]
Ну и да, обновление экрана и события(а если надо и пересчет) отключил бы.


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728


Сообщение отредактировал KuklP - Пятница, 24.04.2015, 12:17
 
Ответить
СообщениеЯ конечно не знаю высшей цели занесения в цикле одинаковых данных, да еще засунув внутрь цикла 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
Дата добавления - 24.04.2015 в 12:15
Amator Дата: Пятница, 24.04.2015, 13:02 | Сообщение № 3
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 107
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
KuklP, большое спасибо. Код работает гораздо быстрее.
 
Ответить
СообщениеKuklP, большое спасибо. Код работает гораздо быстрее.

Автор - Amator
Дата добавления - 24.04.2015 в 13:02
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Ввод данных с формы. (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!