Здравейте хора. Послушай някой и се напънах да напиша малка статия за Excel, която да може да се публикува официално. Е не я одобриха и за това ще я прасна тук, може да е полезна на някой.Използване на VBA за създаване на потребителски функции към Excel
----------------------------------------------------------------------------------------------------------------------------------------------------
В този урок ще ви покажа как можете да си пишете собствени функции за Excel. Това доста може да ви улесни живота и намира широко приложение навсякъде където се използва Excel.
За целта на упражнението нека си изберем подходящ обект. Аз избирам да напиша функция която конвертира градуси по Целзий до градуси по Фаренхайт.
Формулата за изчисляване е следната:
Tf - температура по Фаренхайт
Tc - температура по Целзий
Да започваме. Отворете си Excel и после натиснете "Alt + F11" или изберете от менютата:
Tools -> Macro -> Visual Basic Editor:
----------------------------------------------------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------------------------------------------------
В този момент вероятно ще ви се отвори по долния процорец и трябва да изберете вкарване на нов модул:
----------------------------------------------------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------------------------------------------------
Сега трябва да напишем някакви инструкции като спазваме правилата за писане на Visual Basic. Аз не съм голям фен на Visual Basic, а на простичкия VBScript, затова ще използвам неговия синтаксис и няма да обявявам никакви променливи. Тоя мързел го придобих от Perl, но това е друга тема :). За да ми е по лесно ще напиша програма и после ще я коментирам. Копирайте следния код в модула, който създадохме:
Function far(cels)
far = (9 / 5) * cels + 32
End Function |
----------------------------------------------------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------------------------------------------------
Това е цялата програма. Много кефещо, нали! Тъй като вкарваме допълнителна функция затова и започваме с Function, far() - това е името на функцията, която създаваме, а cels е параметъра който подаваме за обработка на тази функция. Не е задължително да ползвате тези думи, всъщност мисля, че бихте могли и да си напишете думичките на български. Да видим какво се случва с нашия параметър cels.
По формулката по-горе ние ще направим изчислението. Тук е много важно да знаете приоритетите на операторите (= * / + -...) в VBScript, но можете винаги да заобиколите тези приоритети като сложите скоби. Всичко във скоби би изглеждало така:
far = (((9 / 5) * cels) + 32) |
Важното е, че скобите въобще няма да затруднят интерпретатора.
Най-накрая задължително затваряме новосъздадената функция с End Function.
Да видим какво може да прави тая тъпня. Върнете в Excel и попълнете едно поле с новосъздадената функция. Примерно:
=far(56), което би означавало "конвертирай ми 65 градуса по Целзий в градуси по Фаренхайд"
----------------------------------------------------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------------------------------------------------
Надявам се че работи. А защо не пресметнете сойност от други полета. Пример:
----------------------------------------------------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------------------------------------------------
Можете да добавите и функция cel() или функция за смятане на валута.
Прилагам Excel-ския файл с макроса тук:
http://instr.hit.bg/excel/celsius_farenhaid_converter.xls
Благодаря за вниманието и извинявайте ако ви се е сторила скучна темата!