То, что я хотел бы сделать:Оператор Перегрузки в Excel VBA
Я хотел бы использовать operator overloading в Excel для запуска пользовательских функций на моих пользовательских типов данных. Например, при оценке формулы я хочу, чтобы Excel выполнял мою функцию вместо оператора «+», когда вычисление включает один из моих пользовательских типов данных.
Почему я хочу это сделать:
В аналитической химии, каждый номер имеет неопределенность, прикрепленную к ней и написано:
13,56 (± 0,02) мм
Я хотел бы для создания пользовательского типа данных сохраняется величина и неопределенность числа вместе в одной и той же ячейке.
Кроме того, я хочу, чтобы реализовать перегрузку оператора, поэтому, когда я пишу
=A1+A2
и либо A1 или A2 содержит ряд неопределенность типа, моя пользовательская функция работает вместо «+» оператора по умолчанию вычислить неопределенность.
Это сделало бы мои таблицы гораздо чище, так как в настоящее время, я должен написать такое заявление, как
=ADD_UNC(A1, A2)
Который является найти для очень простых уравнений, но становится боль, когда операция я пытаюсь сформировать даже немного нетривиальна.
=MULT_UNC(A3, ADD_UNC(MULT_UNC(A5, A1, A2), A3)
vs.
=A3*((A1*A2)+A3)
Почему я предполагаю, что это возможно:
Я знаю, что в реальной, распустившиеся языки программирования, такие как C#, перегрузка операторов очень часто и очень легко выполнить.
Спасибо за вашу помощь,
Майкл
Судя по [это] (http://www.pcreview.co.uk/threads/user-defined-types-and-overloaded-operators.3318580/), что вы ищете не представляется возможным, хотя я считаю, что это будет отличная функция vba, если она когда-либо появится. –
Я на самом деле столкнулся с этой страницей некоторое время назад и надеялся, что с тех пор все изменилось. Я не специалист по подобным вещам, но я считаю, что Microsoft недавно расширила Office VBA от использования VB6.На основе NET (действительно, не цитируйте меня на этом)? –
Одна мысль заключалась бы в создании события [Worksheet_Change] (https://msdn.microsoft.com/en-us/library/office/ff839775.aspx), токенизирующего ввод ячейки, скажем, с помощью 'Split' и если найдена '+', измените ячейку, чтобы делать то, что вы хотите. –