| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > VBA функция комбинации рядов значений

VBA функция комбинации рядов значений

Ответ
Поиск в этой теме
Непрочитано 21.10.2021, 16:49 #1
VBA функция комбинации рядов значений
Vadim_EC
 
Регистрация: 08.02.2018
Сообщений: 13

Для выделения объектов на чертеже при помощи SelectionSet.Select acSelectionSetAll, , , FilterType, FilterData, допустим при различных слоях нужно создать FilterData, при этом, нельзя использовать несколько занчений FilterData для одного FilterType кода. Выполнил автоматическое заполнение массивов которые можно подставлять в SelectionSet.Select. Может кому нибудь пригодится.


Код:
[Выделить все]
Sub testCall()
    Dim t, b
    b = pfFilling
    t = pfCOSOV(b)
End Sub
'arrData должен состоять из массивов как в функции pfFilling

Function pfCOSOV(arrData) 'комбинации рядов значений - COSOV combinations of series of values
    Dim iCntr#, iCntr1#, iCntr2#
    Dim arrRsltTmp1, arrRsltTmp2, arrRsltTmp, arrTmp, arrTmp1
    Dim bCheck As Boolean
    ReDim arrTmp(0)
    ReDim arrRsltTmp1(UBound(arrData, 1))
    arrTmp1 = arrData(LBound(arrData, 1))
    For iCntr = LBound(arrTmp1, 1) To UBound(arrTmp1, 1)
        arrTmp(0) = arrTmp1(iCntr)
        arrRsltTmp1(iCntr) = arrTmp
    Next

    
    For iCntr = LBound(arrData, 1) To UBound(arrData, 1) - 1
        arrRsltTmp2 = arrData(iCntr + 1)
        ReDim arrRsltTmp(0)
        bCheck = False
        For iCntr1 = LBound(arrRsltTmp1, 1) To UBound(arrRsltTmp1, 1)
            For iCntr2 = LBound(arrRsltTmp2, 1) To UBound(arrRsltTmp2, 1)
                    arrTmp = arrRsltTmp1(iCntr1)
                    ReDim Preserve arrTmp(UBound(arrTmp, 1) + 1)
                    arrTmp(UBound(arrTmp, 1)) = arrRsltTmp2(iCntr2)

                    If bCheck Then
                        ReDim Preserve arrRsltTmp(UBound(arrRsltTmp, 1) + 1)
                        arrRsltTmp(UBound(arrRsltTmp, 1)) = arrTmp
                    Else
                        ReDim arrRsltTmp(0)
                        arrRsltTmp(0) = arrTmp
                        bCheck = True
                    End If


            Next
        Next
        arrRsltTmp1 = arrRsltTmp
    Next
    pfCOSOV = arrRsltTmp
End Function

Function pfFilling()
    Dim arrDT(2), arrDT0(2), arrDT1(4), arrDT2(7)
    
    arrDT0(0) = "AAA0"
    arrDT0(1) = "AAA1"
    arrDT0(2) = "AAA2"
   
    arrDT1(0) = "BBB0"
    arrDT1(1) = "BBB1"
    arrDT1(2) = "BBB2"
    arrDT1(3) = "BBB3"
    arrDT1(4) = "BBB4"
     
    arrDT2(0) = "CCC0"
    arrDT2(1) = "CCC1"
    arrDT2(2) = "CCC2"
    arrDT2(3) = "CCC3"
    arrDT2(4) = "CCC4"
    arrDT2(5) = "CCC5"
    arrDT2(6) = "CCC6"
    arrDT2(7) = "CCC7"
      
    arrDT(0) = arrDT0
    arrDT(1) = arrDT1
    arrDT(2) = arrDT2
    
    pfFilling = arrDT
End Function
Просмотров: 1388
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > VBA функция комбинации рядов значений

Размещение рекламы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Функция чтения свойств и их значений динамического блока Supermax Библиотека функций 11 16.03.2020 09:11
Статистическая обработка по ГОСТ 20522 - Вопрос по исключению max и min значений uvl77 Основания и фундаменты 7 17.02.2020 21:07
DwgRuLispLib: Функция открытия диалога Open\Save As файла (файлов) Supermax Библиотека функций 20 14.03.2018 10:05
Excel. Пользовательская функция замещения буквенных индексов числовыми AlphaGeo Программирование 2 06.07.2010 12:12
Отладка - Окно контрольных значений Mazai Программирование 4 16.06.2008 11:47