|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
09.02.2009, 22:45 | #1 |
Форумчанин
Регистрация: 02.02.2009
Сообщений: 844
|
Помогите оптимизировать код
Вот код, он работает, но жутко мне не нравиться. Это код построчно заполняет таблицу, состоящую из объединенных ячеек из другой таблицы той же структуры, но без объединенных ячеек.
ИОМЗ_всего - общее число строк. x_tab - номер строки, в которую вносим данные. rc - переменная для временного хранения информации. n -переменная цикла Как его можно оптимизировать: With Workbooks(Документ).Worksheets(tab_ name) For n = 1 To ИОМЗ_всего Workbooks(Документ).Worksheets("Исх .данные").Activate Range("ИОМЗ_начало").Select rc = ActiveCell.Offset(0, 0).Cells(n, 0).Value .Activate .Cells(x_tab, 1) = rc 'Порядковый номер ОМЗ Workbooks(Документ).Worksheets("Исх .данные").Activate Range("ИОМЗ_начало").Select rc = ActiveCell.Offset(0, 0).Cells(n, 1).Value .Activate .Cells(x_tab, 3) = rc 'Имя ОМЗ Workbooks(Документ).Worksheets("Исх .данные").Activate Range("ИОМЗ_начало").Select rc = ActiveCell.Offset(0, 0).Cells(n, 2).Value .Activate .Cells(x_tab, 17) = rc 'Класс геод.сети Workbooks(Документ).Worksheets("Исх .данные").Activate Range("ИОМЗ_начало").Select rc = ActiveCell.Offset(0, 0).Cells(n, 3).Value .Activate .Cells(x_tab, 24) = rc 'Координата X Workbooks(Документ).Worksheets("Исх .данные").Activate Range("ИОМЗ_начало").Select rc = ActiveCell.Offset(0, 0).Cells(n, 4).Value .Activate .Cells(x_tab, 29) = rc 'Координата Y x_tab = x_tab + 1 Next n End With
С уважением, Алексей.
|
10.02.2009, 03:17 | #2 | ||
Программист VBA
СуперМодератор
Регистрация: 13.07.2008
Сообщений: 6,858
|
Цитата:
Цитата:
Особенно не нравится разбираться в коде без примера файла... Не надо использовать конструкции типа ActiveCell.Offset(0, 0).Cells(n, 0).Value Во-первых, непонятно, зачем тут .Offset(0, 0)? Во-вторых, почему в Cells(n, 0) последняя координата =0 ? Получается, данные берутся, начиная не с первой ячейки диапазона Range("ИОМЗ_начало"), а с предыдущей... Ещё раз повторю (ранее уже объяснял) - не надо использовать в коде методы .Activate и .Select Вот Ваш код: Код:
|
||
11.02.2009, 23:24 | #3 | |
Форумчанин
Регистрация: 02.02.2009
Сообщений: 844
|
Спасибо, за наводку. Заработало вот в каком виде.
Цитата:
Код:
С уважением, Алексей.
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Оптимизировать код. | Манжосов Денис :) | Общие вопросы Delphi | 1 | 20.10.2008 19:06 |
Помогите оптимизировать! | Altera | Общие вопросы Delphi | 6 | 25.03.2008 20:09 |
Оптимизировать код | NeiL | Помощь студентам | 2 | 21.02.2008 08:57 |
Помогите оптимизировать HTML код после Publisher | Гербера | HTML и CSS | 16 | 03.12.2007 11:46 |
Помогите оптимизировать сайт | Nadejda | HTML и CSS | 4 | 07.01.2007 21:04 |