AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 17.12.2008, 14:44   #1  
Raven Melancholic is offline
Raven Melancholic
Участник
Аватар для Raven Melancholic
Самостоятельные клиенты AX
Лучший по профессии 2015
 
2,164 / 1296 (48) ++++++++
Регистрация: 21.03.2005
Адрес: Москва-Петушки
Поискал, нет примера вариантного массива в аксе.
Кстати, а зачем нужно программно выполнять такую задачу? Мы в свое время делали это для построения диаграмм. Какие еще задачи требуют этого?
Старый 17.12.2008, 14:48   #2  
MironovI is offline
MironovI
Участник
 
724 / 77 (4) ++++
Регистрация: 30.05.2005
Задался целю копировать формат секции отчета сразу на диапазон ячеек (именно форматирование - специальой вставкой) Т.е. данные в отчет выводятся скопом через ADO или буфер обмена, а стиль накладывается сверху. Поскольку секция строк прерывается секцией групп - зпоминаю все диапозоны в отчете и разом к ним применяю формат секции.
Вобщем пока что остановился на варианте - строка через точку с запятой, но по 30 значений (дапазонов) в цикле форматирую.

Последний раз редактировалось Gustav; 19.12.2008 в 09:15. Причина: первоначально из-за опечатки было написано ДДЕ (вместо ADO)
Старый 17.12.2008, 15:52   #3  
Gustav is offline
Gustav
Moderator
Аватар для Gustav
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Регистрация: 24.01.2006
Адрес: Санкт-Петербург
Записей в блоге: 19
Цитата:
Сообщение от MironovI Посмотреть сообщение
Задался целю копировать формат секции отчета сразу на диапазон ячеек (именно форматирование - специальой вставкой) Т.е. данные в отчет выводятся скопом через ADO или буфер обмена, а стиль накладывается сверху. Поскольку секция строк прерывается секцией групп - зпоминаю все диапозоны в отчете и разом к ним применяю формат секции.
Так а скопировать секцию группы+секцию данных на целократный большой диапазон? Сформатировать строку 5, строки 6:10, а затем скопировать строки 5:10 в строки 11:244. В секциях одинаковое количество строк?

Последний раз редактировалось Gustav; 19.12.2008 в 09:25.
Старый 17.12.2008, 16:15   #4  
Gustav is offline
Gustav
Moderator
Аватар для Gustav
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Регистрация: 24.01.2006
Адрес: Санкт-Петербург
Записей в блоге: 19
Иван, вот еще вариант из старого чулана. Думаю, должен понравиться

Если ты можешь использовать какую-то свободную колонку для простановки метки, которая будет означать, что это строка данных, то можно попробовать так (эту служебную колонку потом можно удалить):

1. Выбираешь пустую колонку. В VBA-примере ниже - это колонка A.
2. Если строку надо выделять и форматитровать, то пишем в эту колонку 1. В противном случае оставляем ячейку пустую.
3. Выполняем "ручную" операцию "Правка - Перейти - Выделить - Константы - Числа".
4. Получившееся выделение распространяем на всю ширину листа.

На VBA это выглядит примерно вот так:
Код:
 
Sub ExcelVBAMacro1()

    Dim rng As Range

    'как будто это мы проставили при выводе отчета:   
    Range("A12:A16,A18:A22,A24:A28,A30:A34,A36:A40").Value = 1 
    'если строка будет капризничать, то заменить , на ;
    
    Set rng = ActiveSheet.Columns("A:A")
    
    Set rng = rng.SpecialCells(xlCellTypeConstants, 1).EntireRow
    rng.Select
    
End Sub

Результат работы этого кода:

Нажмите на изображение для увеличения
Название: ranges.jpg
Просмотров: 600
Размер:	80.5 Кб
ID:	4066
Старый 18.12.2008, 10:30   #5  
MironovI is offline
MironovI
Участник
 
724 / 77 (4) ++++
Регистрация: 30.05.2005
Эх понравилось.. тут получается правда под каждую секцию отчета нужно свою колонку отдельную.. жаль при "найти и выделить" нельзя указать конкретное значение типа 1 или 2.. ну тоже вариант по-любому
Старый 18.12.2008, 11:35   #6  
Gustav is offline
Gustav
Moderator
Аватар для Gustav
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Регистрация: 24.01.2006
Адрес: Санкт-Петербург
Записей в блоге: 19
Цитата:
Сообщение от MironovI Посмотреть сообщение
тут получается правда под каждую секцию отчета нужно свою колонку отдельную.. жаль при "найти и выделить" нельзя указать конкретное значение типа 1 или 2..
Не нужно отдельную колонку. Конкретно для двух вариантов можно использовать число для одного и текст для другого и сформировать два разных составных диапазона (синий и желтый):
Код:
Sub ExcelVBAMacro2()

    Dim rng As Range ' колонка А
    Dim rng1 As Range 'синий
    Dim rng2 As Range 'желтый
    
    Range("A5:A8,A15:A17,A24:A27").Value = 1
    Range("A9:A13,A18:A22,A28:A32").Value = "a"
    
    Set rng = ActiveSheet.Columns("A:A")
    
    Set rng1 = rng.SpecialCells(xlCellTypeConstants, 1).EntireRow
    rng1.Interior.ColorIndex = 37
    
    Set rng2 = rng.SpecialCells(xlCellTypeConstants, 2).EntireRow
    rng2.Interior.ColorIndex = 6
    
End Sub
Нажмите на изображение для увеличения
Название: ranges2.jpg
Просмотров: 665
Размер:	43.7 Кб
ID:	4068

И еще в запасе несколько подобных "индикаторов" - пустые, логические, ошибочные даже (можно ввести в ячейку формулу =0/0 и получить ошибку, которую можно выделить ):

Название: ranges2g.jpg
Просмотров: 12771

Размер: 23.0 Кб

Но, согласен, если бы можно было помимо "Константа - Число" еще при этом и конкретное число указывать - было бы очень удобно для подобных манипуляций.
Старый 18.12.2008, 13:37   #7  
Gustav is offline
Gustav
Moderator
Аватар для Gustav
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Регистрация: 24.01.2006
Адрес: Санкт-Петербург
Записей в блоге: 19
Эх, разошёлся я, раскочегарился
Цитата:
Сообщение от Gustav Посмотреть сообщение
если бы можно было помимо "Константа - Число" еще при этом и конкретное число указывать - было бы очень удобно для подобных манипуляций.
Как мне только что стало ясно, достаточно всего двух колонок: в одной целые числа - метки секций, а в другой формула-индикатор. После окончания вывода всех данных отчета значения индикатора меняем в небольшом цикле, последовательно перебирающем все возможные уникальные значения из первой колонки.

На каждом шаге фиксируется диапазон (несколько несоседних строк) для конкретной метки. "Фиксируется" - в соответствующую объектную переменную, в Аксапте это будут COMы, здесь в Excel мы можем себе позволить массив типа Range.

С каждым таким составным диапазоном потом можно делать что угодно. В нижеследующем VBA-примере я их расцвечиваю разными цветами:
Код:
Sub ExcelVBAMacro3()

    Dim rngB As Range  'колонка B
    Dim rng(1 To 10) As Range 'массив диапазонов

    Dim z As Integer
    Dim i As Integer
    
    ActiveWorkbook.Names.Add Name:="current", RefersToR1C1:="=0"
    
    'генерирование тестовых данных - в 2 колонки
    For z = 1 To 4
        For i = 1 To 10
            'меточные значения в колонке A
            Cells((z - 1) * 10 + i, 1).Value = i
            
            'формулы с "ошибкой-индикатором" в колонке B
            Cells((z - 1) * 10 + i, 2).FormulaR1C1 = "=RC[-1]/(RC[-1]-current)"
        Next i
    Next z
    
    Set rngB = Range(Range("B1"), Range("B1").End(xlDown))
    
    'определение диапазонов
    For i = 1 To 10
        'фактически присваивание current = i
        ActiveWorkbook.Names.Add Name:="current", RefersToR1C1:="=" & CStr(i)
        
        '"Правка - Перейти - Выделить - Формулы - Ошибки".
        Set rng(i) = rngB.SpecialCells(xlCellTypeFormulas, 16).EntireRow
    Next i
    
    'визуализация диапазонов расцвечиванием
    For i = 1 To 10
        rng(i).Interior.ColorIndex = i
    Next i
    
End Sub
Нажмите на изображение для увеличения
Название: ranges3.jpg
Просмотров: 667
Размер:	78.9 Кб
ID:	4070
Старый 23.12.2016, 14:55   #8  
AFT is offline
AFT
Участник
 
3 / 10 (1) +
Регистрация: 23.12.2016
Цитата:
Сообщение от Raven Melancholic Посмотреть сообщение
Поискал, нет примера вариантного массива в аксе.
Кстати, а зачем нужно программно выполнять такую задачу? Мы в свое время делали это для построения диаграмм. Какие еще задачи требуют этого?
задача обновить прайс,хаотично вытащить 1500 позиций ,вставив их на другой лист

Последний раз редактировалось AFT; 23.12.2016 в 15:03.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Исследование скорости экспорта данных из Axapta в Excel (коллективный эксперимент) Gustav DAX: База знаний и проекты 79 13.02.2014 13:18
gl00mie: Read Excel table via ADO Blog bot DAX Blogs 2 09.04.2010 08:32
[Excel] - Несколько версий Excel на машине клиента Андре DAX: Программирование 11 07.08.2007 13:45
Вызов Item() для коллекций Excel Владимир Максимов DAX: Программирование 15 17.08.2006 19:47
Как выделить все записи в гриде скопировать и отправить в Excel??? velk DAX: Программирование 36 22.12.2005 14:35
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 10:48.