ДД! Подскажите пожалуйста. Вот задание: Написать программу вычисления функции y=f(x). Заполнить таблицу значений при x[a,b] с шагом h . a,b,h вводятся с клавиатуры (если эти величины в задании выражены через pi , то их следует предварительно рассчитать); вывод результатов осуществляется в два столбика ( x=. y=. ) с точностью до 6 знаков после запятой. Я сделала, но что то не пошло. У меня на форме UserForm1
Код к задаче: «Написать программу вычисления функции»
Листинг программы
Private Sub CommandButton1_Click() Dim a As Single, x As Single Dim b As Single Dim h As Single a = Val(TextBox1.Text) b = Val(TextBox2.Text) h = Val(TextBox3.Text) Label1.Caption = «» Label5.Caption = «» ‘MsgBox » a=» » » https://studassistent.ru/vba/napisat-programmu-vychisleniya-funkcii-vba-2″ target=»_blank»]studassistent.ru[/mask_link]
VBA Excel. Первая функция (для начинающих)
Функция (Function) отличается от подпрограммы (Sub) тем, что она всегда возвращает какое-либо значение. Если функция размещается в ячейке рабочего листа, то в этой ячейке мы видим значение, которое функция возвратила.
Excel VBA basics: Data types, DIM & SET (Learn to use them correctly)
В качестве примера мы создадим функцию, вычисляющую объем цилиндра по формуле: V=π*D²/4*H, где
- V – объем цилиндра;
- π – число Pi;
- D – диаметр основания цилиндра;
- H – высота цилиндра.
Первая функция на VBA Excel
Перейдите в редактор VBA, нажав сочетание клавиш «Левая_клавиша_Alt+F11».
Если вы не создавали ранее в этом проекте VBA стандартный программный модуль, нажмите кнопку «Module» во вкладке «Insert» главного меню. То же подменю откроется при нажатии на вторую кнопку после значка Excel на панели инструментов.
Ссылка на модуль появится в проводнике слева. Если модуль создан ранее, дважды кликните по его ссылке в проводнике, и он откроется справа для редактирования.
Нажмите кнопку «Procedure…» во вкладке «Insert» главного меню. Та же ссылка будет доступна при нажатии на вторую кнопку после значка Excel на панели инструментов.
В открывшемся окне добавления шаблона процедуры выберите «Function», вставьте в поле «Name» название функции «ObyemTsilindra» и нажмите «OK».
Шаблон функции добавится на лист модуля.
Вставьте в скобки через запятую аргументы функции (D, H), а внутрь шаблона следующую строку:
ObyemTsilindra = WorksheetFunction . Pi * D ^ 2 / 4 * H
В этой строке, функции (слева) присваивается значение, вычисленное в выражении справа. Выражение повторяет нашу первоначальную формулу вычисления объема цилиндра, где «WorksheetFunction.Pi» – это функция рабочего листа, возвращающая число Pi. Функция, вычисляющая объем цилиндра по диаметру основания и высоте готова.
Цикл For … Next — Новый курс VBA (8)
Вставка функции в ячейку
Вставить пользовательскую функцию в ячейку можно как вручную: =ObyemTsilindra(Ячейка1;Ячейка2) , так и с помощью мастера функций. Выберите ячейку, в которую вы хотите вставить формулу, и вызовите матер функций.


Источник: vremya-ne-zhdet.ru
Реализация математических функций. Задача 1
Первый пример после введения может кому-то показаться страшным и непонятным, но не волнуйтесь, всё разберём по полочкам и даже неопытный кодер поймёт какие возможности нам открывает VBA. Итак, перед нами задача: Реализовать в VBA математические функции, вывести сумму этих функций в ячейки напротив заданных Х. Сами Функции таковы:
Приступаем! Сначала определитесь, где вы будете писать. Есть вариант писать программу на самом Листе, но помните, !! если удалите случайно лист, на котором вы писали код то все ваши труды пойдут прахом!!. Вот эти листы и есть, те самые, которые у вас на Главной.

Так что я вам советую создать модуль (Дополнительный блок), с которым могут быть связанны все Листы в ваше книге. Для этого в нашей среде нажимаем Insert —> Module. Дальше открываем его двойным щелчком (если не открылся автоматически).

Переходим к коду.
Public Sub prog1() Dim x() As Double Dim f1 As Double Dim f2 As Double Dim f3 As Double Dim f As Double Dim i As Integer Dim s As Integer
Здесь идёт объявление: самой функции(Sub), динамического массива х(), который нужно потом переопределить (всегда! при работе с динамическим массивом в VBA), f1, f2, f3 результат наших трёх функций, f — сумма результатов функций, i, s — необходимые переменные для промежуточных действий. В относительно далёкие времена использовалось объявление через %s, %d и т.д., но данное нами объявление считается грамотным и современным на дату публикации.=)
On Error GoTo errHandler Do ReDim x(s — 1) As Double x(i) = Cells(2 + i, 1) If x(i) >= 0 Or Tan(2 ^ x(i)) > 0 Then f1 = Log(x(i)) / Log(2) f2 = Tan(1 / (x(i) ^ 3)) f3 = Log(Abs(Tan(2 ^ x(i)))) / Log(2) f = f1 + f2 + f3 Cells(2 + i, 3) = f i = i + 1 Else: MsgBox («Error!») i = i + 1 End If Loop Until i = s — 1 Exit Sub errHandler: MsgBox Err.Description, vbCritical, «Error No: » Проверка условия -> либо снова действие либо идём дальше.
ReDim — та самая команда переопределения динамического массива, о которой я упоминал в начале.С помощью неё мы говорим, что массив Х будет иметь s — 1 элементов. Cells() — команда для обращения к ячейки, в её параметры мы записываем «координаты» ячейки. If x(i) >= 0 Or Tan(2 ^ x(i)) <> 0 Then — здесь мы проверяем подходит ли на введённые пользователем Х.
Это условие следует из области допустимых значений для того или иного уравнения. Далее, думаю, понятно. Приравниваем наши f# соответствующим уравнениям и суммируем их в f. Записываем результат в ячейку командой cells() = . И увеличиваем счётчик по i.
Else выполняется в том случае, если Х не прошёл проверку. MsgBox выводит сообщение в диалоговом окне. Запомните, в этом языке каждый If имеет свой End If. Кроме тех случаев, когда условие задано в одну строку.
Предпоследняя страшная строка MsgBox Err.Description, vbCritical, «Error No: » Err.Number: то что в кавычках, просто символьная строка, https://codetown.ru/vba/matematicheskie-funkcii-01/» target=»_blank»]codetown.ru[/mask_link]