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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.03.2011, 23:01   #1
GrayBy
Пользователь
 
Регистрация: 26.06.2010
Сообщений: 41
По умолчанию Дублирование выбранных ячеек.

Собсно, есть таблица продукции. В крайне левом столбце, указывается кол-во нужной продукции. Нужно сделать так, чтобы на "лист 2" отображались только выбранные позиции.
Т.е. выбираем 3-4 товара, и в столбце "кол-во" указываем n-ое число. после этого на следующей странице, в таблице отображенные эти товары.
Прошу не просто сделать, а просветить как
файл прилагается.
Вложения
Тип файла: rar Новая папка (3).rar (19.2 Кб, 9 просмотров)
GrayBy вне форума Ответить с цитированием
Старый 04.03.2011, 23:04   #2
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Что-то вроде этого нужно? Вчера налаживал...
http://www.planetaexcel.ru/docs/foru...st_205400.xlsm

Можно по этому алгоритму сделать так - на второй лист копируются все позиции, где есть количество (т.к. механизм "выбираем" Вы не описали.)
В том примере человек чекбоксы уже нарисовал, и таблицы, куда копировать, тоже уже сделал на 90%.
Так что за Вами ещё таблица
Только вот там есть объединённые ячейки (ТАЙФУН МАСТЕР № 100) - это конечно красиво, но код усложняет. Я бы сделал 3 заполненные строки, в крайних "лишних" строках шрифт в цвет фона - с виду почти как сейчас будет, зато програмеру париться не нужно.
webmoney: E265281470651 Z422237915069 R418926282008

Последний раз редактировалось Hugo121; 04.03.2011 в 23:17.
Hugo121 вне форума Ответить с цитированием
Старый 04.03.2011, 23:10   #3
GrayBy
Пользователь
 
Регистрация: 26.06.2010
Сообщений: 41
По умолчанию

Hugo121, да. Только желательно, чтобы не было нужды ставить галочки. Чтобы срабатывало от наличия значения в ячейке...
Я выложил только 1 страницу прайса. Таких страниц около 10...
Поэтому, был бы благодарен, если бы объяснили на пальцах, как делать

Последний раз редактировалось GrayBy; 04.03.2011 в 23:22.
GrayBy вне форума Ответить с цитированием
Старый 04.03.2011, 23:27   #4
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Ну я и предлагаю - если количество поставили - то копируем.
На пальцах не обяснишь. Алгоритм могу - при переключении на второй лист код его очищает, потом просматривает диапазон первого листа и копирует на второй отмеченные данные.
И в общем там под Вашу задачу почти ничего переделывать не нужно - так, диапазоны, ячейки, что проверяем...
webmoney: E265281470651 Z422237915069 R418926282008

Последний раз редактировалось Hugo121; 04.03.2011 в 23:30.
Hugo121 вне форума Ответить с цитированием
Старый 04.03.2011, 23:30   #5
GrayBy
Пользователь
 
Регистрация: 26.06.2010
Сообщений: 41
По умолчанию

Hugo121, ктобы объяснил, как енто реализовать))
Где эти диапазоны. я просто не вкурил, как добиться того, чтобы значения переносились. Где это можно задать))

Последний раз редактировалось GrayBy; 04.03.2011 в 23:39.
GrayBy вне форума Ответить с цитированием
Старый 04.03.2011, 23:51   #6
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Сделал, анализируйте
Семь строк в цикле конечно можно было в одну записать (в другой цикл), но так легче порядок поменять, если нужно, или что-то не тянуть, например описание.
Вложения
Тип файла: rar Для примера.rar (22.9 Кб, 22 просмотров)
webmoney: E265281470651 Z422237915069 R418926282008

Последний раз редактировалось Hugo121; 04.03.2011 в 23:54.
Hugo121 вне форума Ответить с цитированием
Старый 04.03.2011, 23:59   #7
GrayBy
Пользователь
 
Регистрация: 26.06.2010
Сообщений: 41
По умолчанию

Hugo121? огромное спс, но вы меня не так поняли. Мне нужно, понять чё и где жмякать). Я не догоняю, как это делается, де чё нажимается, и де какие диапазоны задаются
GrayBy вне форума Ответить с цитированием
Старый 05.03.2011, 00:19   #8
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Хорошо. Хотя писать комментарии дольше, чем код переделывать.
Я тут немного в мелочах поменял кое-что - лучше этот код использовать.
Код:
Option Explicit

Private Sub Worksheet_Activate()
    Dim i As Long, iLastRow As Long, ind As Long
    With Application
        .ScreenUpdating = False
        '.EnableEvents = False 'вот именно это тут лишнее, отключил
        '        ac = .Calculation: .Calculation = xlCalculationManual
    End With
    'определяем последнюю строку для очистки
    iLastRow = Лист2.Cells(Rows.Count, 1).End(xlUp).Row + 1
    'очищаем
    Range("a8:G" & iLastRow).ClearContents
    
    'определяем последнюю строку для перебора отмеченных
    iLastRow = Лист1.Cells(Rows.Count, 1).End(xlUp).Row
    ind = 7 'начало копирования будет ниже этой строки
    For i = 6 To iLastRow 'перебор диапазона
        If Лист1.Cells(i, 7).Value > 0 Then 'если есть количество
            ind = ind + 1 'увеличиваем индекс для копирования
            'собственно копирование данных (без форматов)
            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
        End If
    Next

    With Application
        .ScreenUpdating = True
        '.EnableEvents = True 'вот именно это тут лишнее (пара верхней строке)
        '        .Calculation = ac
    End With

End Sub
Да, забыл - код в модуле листа.
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 05.03.2011, 00:23   #9
GrayBy
Пользователь
 
Регистрация: 26.06.2010
Сообщений: 41
По умолчанию

Hugo121, еслибудет 5-6 листов с прайсом, и 1 лист с таблицей. Код как-то изменится? Или в модель каждого листа данный код засовывать?
GrayBy вне форума Ответить с цитированием
Старый 05.03.2011, 01:08   #10
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Этот код в листе, куда собираете данные.
Если листов с прайсом много, то нужно для каждого листа определить просматриваемый диапазон и перебрать его.
Т.е. после строки
Range("a8:G" & iLastRow).ClearContents
организовать цикл по этим листам, или проще (но больше кода) повторить 5-6 раз код копирования, меняя листы.
Только тогда вынести строку
ind = 7 'начало копирования будет ниже этой строки
из цикла.

P.S. Но с объединёнными разберитесь - я там одну переделал, но ещё парочка осталась.
webmoney: E265281470651 Z422237915069 R418926282008

Последний раз редактировалось Hugo121; 05.03.2011 в 01:21.
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