![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы
![]() |
Поиск в этой теме
![]() |
![]() |
#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
С уважением, Алексей.
|
![]() |
![]() |
![]() |
#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 Вот Ваш код: Код:
|
||
![]() |
![]() |
![]() |
#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 |