Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.03.2011, 10:11   #11
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Не вникал в задачу, просто фрагмент кода
Код:
Cells(ind, 1).Value = Лист1.Cells(i, 1).Value
Cells(ind, 2).Value = Лист1.Cells(i, 2).Value
Cells(ind, 3).Value = Лист1.Cells(i, 3).Value
Cells(ind, 4).Value = Лист1.Cells(i, 4).Value
Cells(ind, 5).Value = Лист1.Cells(i, 5).Value
Cells(ind, 6).Value = Лист1.Cells(i, 6).Value
Cells(ind, 7).Value = Лист1.Cells(i, 7).Value
можно заменить на
Код:
Cells(ind, 1).Resize(, 7).Value = Лист1.Cells(i, 1).Resize(, 7).Value
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 05.03.2011, 10:46   #12
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Да, это можно было сократить (я выше написал), но в таком виде проще что-то выкинуть или поменять порядок, как обычно бывает в таких задачах.
Но заказчик может этот блок и заменить, я не против
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 05.03.2011, 13:07   #13
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

И кстати - в реальном примере объединённых много, поэтому в итоге эти 7 строк превращаются в
Код:
        With Лист1
            If .Cells(i, 7).Value > 0 Then
                ind = ind + 1
                If .Cells(i, 1).MergeCells Then
                    Cells(ind, 1).Value = .Cells(.Cells(i, 1).MergeArea.Row, 1).Value
                Else
                    Cells(ind, 1).Value = .Cells(i, 1).Value
                End If

                If .Cells(i, 2).MergeCells Then
                    Cells(ind, 2).Value = .Cells(.Cells(i, 2).MergeArea.Row, 2).Value
                Else
                    Cells(ind, 2).Value = .Cells(i, 2).Value
                End If

                Cells(ind, 3).Value = .Cells(i, 3).Value

                If .Cells(i, 4).MergeCells Then
                    Cells(ind, 4).Value = .Cells(.Cells(i, 4).MergeArea.Row, 4).Value
                Else
                    Cells(ind, 4).Value = .Cells(i, 4).Value
                End If

                Cells(ind, 5).Value = .Cells(i, 5).Value
                Cells(ind, 6).Value = .Cells(i, 6).Value
                Cells(ind, 7).Value = .Cells(i, 7).Value
            End If
        End With
или если один подход для всех и не нужно менять порядок:
Код:
        With Лист1
            If .Cells(i, 7).Value > 0 Then
                ind = ind + 1
                For x = 1 To 7
                If .Cells(i, x).MergeCells Then
                    Cells(ind, x).Value = .Cells(.Cells(i, x).MergeArea.Row, x).Value
                Else
                    Cells(ind, x).Value = .Cells(i, x).Value
                End If
                Next
            End If
        End With
webmoney: E265281470651 Z422237915069 R418926282008

Последний раз редактировалось Hugo121; 05.03.2011 в 13:25.
Hugo121 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перенос выбранных записей в другую таблицу Tony1991 БД в Delphi 0 17.12.2010 16:59
Выборка из уже выбранных данных kiril111 БД в Delphi 5 12.08.2010 17:11
Заполнение имени, при сохранении. Автозаполнение выбранных ячеек GrayBy Microsoft Office Excel 41 01.07.2010 18:14
несколько выбранных элементов checklistbox в sql запрос kate158 БД в Delphi 5 22.06.2009 16:32
Архивирование выбранных файлов и запись на диск rombler69 Общие вопросы Delphi 0 16.06.2009 21:08