Страницы: 1
RSS
Использование чекбокса в умной таблице
 
Доброго времени суток всем! Заранее благодарен всем за помощь и ответы, поиском решения своей задачи не смог найти, или ее тут нет или я им плохо умею пользоваться

Итак суть вопроса с примером.

Имеется 2 листа с умными таблицами, на листе 1 развернутая информация (в примере 5 колонок, в реальности будет больше), на листе 2 сокращенная (в примере 2 колонок, в реальности будет больше), необходимо определенные колонки из листа 1 (к примеру 2 и 4), при выделении определенной строки чекбоксом, копировать значения и добавлять в конец умной таблицы на лист 2.

1 вопрос, как сделать что бы в последней колонке листа 1 добавлялись новые чекбоксы с макросом копирования (умная таблица листа 1 постоянно растет, и достигает порядка 2-3 тысячи, то есть копировать постоянно при добавлении новой строки макрос с чекбоксом не вариант :( )
2 вопрос, можно сделать что бы чекбоксы с определенным макросом появлялись автоматически при создании новой строчки умной таблицы?
3 вопрос, как при ошибочном выделении чекбокса, и снятии с него флажка, данные этой строки убирались с таблицы на листе 2?

Заранее благодарен за ответ
 
Цитата
TMD написал: порядка 2-3 тысячи
3 тысячи чекбоксов сильно раздуют Ваш файл.Поищите по форуму решения с использование шрифта Marlett
Согласие есть продукт при полном непротивлении сторон
 
Цитата
Sanja написал:
использование шрифта Marlett
Размер файла меня сильно не волнует или будет очень сильно тормозить? а про использование шрифта Marlett я вообще не слышал что это такое :(
 
Цитата
TMD написал:
Marlett я вообще не слышал что это такое
Смортите картинку.
Может сделать столбец с выбором значения из выпадающего списка значка с галочкой? И макросом уже отслеживать появление символа с галкой в ячейке.
Вот горшок пустой, он предмет простой...
 
Цитата
TMD написал: а про использование шрифта Marlett я вообще не слышал что это такое
Цитата
Sanja написал: Поищите по форуму решения с использование шрифта Marlett
НАПРИМЕР
Согласие есть продукт при полном непротивлении сторон
 
Посмотрите файл. Кликайте мышкой в столбце 'Чек' (G)
Изменено: Sanja - 21.03.2018 16:24:17
Согласие есть продукт при полном непротивлении сторон
 
Sanja, спасибо огромное, это именно то что хочу реализовать, но если вас не сильно затруднить не могли бы Вы описать подсказками код что бы мне можно было его переделать под свою таблицу (хотелось бы его понять, а не просто методом "научного подбора" заставить его работать)

Заранее благодарен
 
Прокомментировал строки, которые могут не соответствовать Вашим реальным данным
Согласие есть продукт при полном непротивлении сторон
 
Sanja, Спасибо, буду пробовать вязать к своей таблице
 
Sanja, ломаю голову что бы прилепить к своей таблице, почти получилось, но значения копирует только двух колонок, остальные ставит Н/Д, помогите пожалуйста понять где я что не правильно изменил, новые пример прикрепляю с максимально приближенными количеством колонок в табл1 и табл2, и порядком копирования значений из табл1 в табл2 и маленький доп вопрос в примере

Заранее благодарен
 
Значения из каких столбцов исходной таблицы нужно копировать на лист 'Выборка'?
Согласие есть продукт при полном непротивлении сторон
 
Цитата
Sanja написал:
Значения из каких столбцов исходной таблицы нужно копировать на лист 'Выборка'?
Столбцы из листа 1                 Столбцы на лист 2
3                                            1
4                                            2
6                                            3
7                                            4
14                                          5
5                                            6
2                                            7

То есть данные в 1 таблице из колонки 3 должны быть в колонке 1 таблицы выгрузка
данные в 1 таблице из колонки 4 должны быть в колонке 2 таблицы выгрузка
данные в 1 таблице из колонки 6 должны быть в колонке 3 таблицы выгрузка  и т.д.
Изменено: TMD - 22.03.2018 14:05:36
 
Переписал код с привязкой именно к самой таблице. Т.е. независимо от ее расположения на листе, псевдочекбоксы будут устанавливаться в ЕЕ первом столбце, а не в первом столбце листа. Для очистки столбца от псевдочекбоксов кликайте по заголовку этого столбца (ЧЕК, желтая ячейка)
Согласие есть продукт при полном непротивлении сторон
 
Sanja, спасибо огромное, буду пробовать, надеюсь вопросов больше не возникнет  ;)  
 
На всякий случай. Хороший ресурс по Умным таблицам
Согласие есть продукт при полном непротивлении сторон
 
Sanja, Ваша помощь опять понадобилась, тут при всем желании сам не разберусь :(((

Ошибка получилась во время тестирования, я добавил еще один лист по аналогии с выгрузкой, но только на печать, добавил 2 колонки все работало супер.

Но заметил, что когда в определенной колонке много текста, то во вкладку На печать не копирует данные, я так понимаю что заполнена память массива в который копируются данные, можно ли расширить эту память или дело не в ней?  
 
Функция Transpose не работает со значениями массива более чем в 255(или 256, не помню точно) символов. Поэтому массив нужно предварительно 'перевернуть в цикле'. Код для листа 'Печать' будет выглядеть так
Код
Private Sub Worksheet_Activate()
Dim arr(), arrSel(), arrTr(), I&, J&
On Error Resume Next
Application.ScreenUpdating = False
Application.EnableEvents = False
arr = Worksheets("ДАННЫЕ").ListObjects("Данные").DataBodyRange.Value    'забираем в массив таблицу 'ДАННЫЕ' листа 'Данные'
For I = 1 To UBound(arr)
    If arr(I, 1) <> Empty Then  'собираем в массив данные по счетам и суммам из строк с 'галочкой'
        ReDim Preserve arrSel(9, J)
        arrSel(0, J) = CStr(arr(I, 2))  '2 - столбец
        arrSel(1, J) = arr(I, 3)        '3 - столбец
        arrSel(2, J) = arr(I, 4)        '4 - столбец
        arrSel(3, J) = arr(I, 5)        '5 - столбец
        arrSel(4, J) = arr(I, 6)       '6 - столбец
        arrSel(5, J) = arr(I, 7)        '7 - столбец
        arrSel(6, J) = arr(I, 8)        '8 - столбец
        arrSel(7, J) = arr(I, 9)        '9 - столбец
        arrSel(8, J) = arr(I, 10)        '10 - столбец
        J = J + 1
    End If
Next
'транспонируем массив в цикле
ReDim arrTr(0 To UBound(arrSel, 2), 0 To 8)
For I = 0 To UBound(arrTr)
    For J = 0 To UBound(arrTr, 2)
        arrTr(I, J) = arrSel(J, I)
    Next
Next

With Me.ListObjects("Печ").DataBodyRange
    If .Rows.Count > 1 Then
        .Offset(1, 0).Resize(.Rows.Count - 1, .Columns.Count).Rows.Delete   'удаляем все строки кроме первой из результирующей таблицы на листе 'Выборка'
    End If
    .Rows(1).ClearContents  'очищаем первую строку
    If (Not Not arrTr) <> 0 Then
        .Cells(1, 1).Resize(UBound(arrTr) + 1, 9) = arrTr
    End If
End With
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub
Согласие есть продукт при полном непротивлении сторон
 
Sanja, спасибо, сейчас буду пробовать лепить
Страницы: 1
Наверх