Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
Как понять, какой элемент выбран из ComboBox на панели инструментов CommandBars., Извлечение данных из ComboBox
 
Всем здравия!

Надстройкой создается панель инструментов и на неё добавляются кнопки и раскрывающийся список, например, так:

Код
Sub Auto_open()
Панель_App
End Sub


Код
Public Sub Панель_App()

  Const MyBarName As String = "Approximation"
  Dim myBar As CommandBar, FindBar As Boolean
  FindBar = False
  
  'Проверка наличия панели среди всех панелей
  For Each myBar In Application.CommandBars
    If myBar.Name = MyBarName Then
        FindBar = True
        Exit For
    End If
  Next
   
  'Если панель не найдена, создать её и отобразить
  If Not FindBar Then
    Set myBar = Application.CommandBars.Add(Name:=MyBarName, Temporary:=False)
      'End If
      myBar.Visible = True
    
    
      'Создать на панели кнопки
    Set myControl = Application.CommandBars(myBar.Index).Controls.Add(Type:=msoControlButton, Before:=1)
    With myControl
        .Style = ButtonStyle
        .FaceId = 422
        .Caption = ""
        .TooltipText = ""
        .OnAction = "App1"
    End With

    
    Set myControl = Application.CommandBars(myBar.Index).Controls.Add(Type:=msoControlComboBox, Before:=2)
    With myControl
        .Caption = "Order"
       '.ControlTipText = ""
        .AddItem Text:="1 вариант", Index:=1
        .AddItem Text:="2 вариант", Index:=2
        .DropDownLines = 3
        .DropDownWidth = 65
        .ListHeaderCount = 0
        .OnAction = "App2"
        .ListIndex = 5
        '.Value = "1 вариант" ', Index:=1
  
    End With

 End If
End Sub


Но никак не могу нормально извлечь данные из раскрывающегося списка.

Цель: по нажатию кнопки вызывается процедура с параметром, извлеченным из раскрывающегося списка.
Точнее, по нажатию кнопки вызывается вспомогательная процедура (без параметра), которая, в свою очередь, должна получить данные из ComboBox.
И вот здесь затык.
Пытался по .OnAction вызывать вспомогательную процедуру и из неё получить данные ComboBox, но тоже не удалось.
С ComboBox на формах никаких проблем нет, а что делать с CommandBars, прошу подсказать.

В сети очень мало информации о ComboBox на CommandBars, если помножить это на мой малый опыт в VBA (немного программировал более 10 лет назад), получается туго.
Прошу помочь.
Изменено: Юрий М - 15.12.2021 13:23:44
Аппроксимация полиномом в MS Excel., Сравнение разных способов аппроксимации полиномом. Низкое "качество" аппроксимации встроенной функцией ЛИНЕЙН.
 
Уважаемые сопланетники!

Столкнулся с проблемой, прошу помочь.

Для аппроксимации передаточной характеристики измерительных приборов часто используют полином. С точки зрения электроники - это очень удобный способ, требующий от МК относительно мало ресурсов и предоставляющий очень хорошую точность.

Для получения коэффициентов однофакторного полинома я традиционно использовал встроенную в Excel функцию ЛИНЕЙН. Однако в имеющейся в данный момент задаче выяснилось, что погрешность аппроксимации этим способом очень высока, - значительно выше, чем при использовании математических пакетов или линии тренда графика в Excel.

Предположив, что проблема в некорректном использовании функции ЛИНЕЙН, перешерстил интернет, пробовал сторонние файлы. Оказалось, проблема известная, и связана она с алгоритмом работы этой функции (подробности я не понял, в математике не очень).

Я взял одну и ту же выборку и сравнил четыре способа получения коэффициентов:
1. с использованием ЛИНЕЙН
2. с помощью утилиты Agraph
3. построением линии тренда на графике Excel
4. с помощью функций polyfit/polyval в Octave


Выяснилось, что на большой выборке (13 точек по 600 измерений в каждой) первый способ (ЛИНЕЙН) даёт примерно в 1,5...2 раза бОльшую погрешность, чем другие.


При меньшей выборке (13 точек по 5 в каждой, итого 65 точек) ещё интереснее: и ЛИНЕЙН, и Agraph дают погрешность в 4 раза больше, чем два последних.
Agraph имеет ещё два недостатка - максимальное количество обрабатываемых точек - 5000, а количество значащих цифр в коэффициентах - не более 9.



Два последних способа дают отличный результат, но есть одна проблема - сложность извлечения коэффициентов.
Требуется постоянно менять данные, и, соответственно, производить множество вспомогательных действий для загрузки/конвертирования данных и "выдёргивания" коэффициентов.

Хотелось бы все действия максимально автоматизировать и привязать к Excel. Возможно, можно как-то исхитриться и заставить ЛИНЕЙН работать по другому?
Или есть способ (может, с помощью VBA) автоматически выдернуть коэффициенты из линии тренда?
Попадались в сети фрагменты VBA для вычисления коэффициентов, но тоже приемлемого ничего не подобрал...

p.s. Движок запрещает грузить файлы свыше 100к, поэтому нарезал скринов.
Страницы: 1
Наверх