Самоучитель VBA


         

выводимый на рабочем листе программой


/p>



Рис. У5.2. Отчет, выводимый на рабочем листе программой решения уравнения с параметром

Private Sub CommandButtonl_Click()

' Процедура нахождения корней уравнения с параметром

Dim ПараметрНач As Double

Dim ПараметрКон As Double

Dim ПараметрШаг As Double

Dim НачПрибл As Double

Dim ПраваяЧасть As Double

Dim Формула As String

'

' ПараметрНач - начальное значение параметра

' ПараметрКон - конечное значение параметра

' ПараметрШаг - шаг изменения параметра

' НачПрибл - начальное приближение корня, общее для всех

' значений параметра

' ПраваяЧасть - правая часть уравнения

' Формула - левая часть уравнения. Уравнение записывается так,

' что неизвестная входит только в левую часть, а

' правая часть - постоянна

Dim i As Integer

Dim Длина As Integer

Dim n As Integer

'

' i, n, Длина - вспомогательные переменные

'

' Ввод исходных данных из диалогового окна

'

With UserForml

ПарамётрНач = CDbl(.TextBoxl.Text)

ПараметрКон = CDbl(.TextBox2.Text)

ПараметрШаг = CDbl(.TextBox3.Text)

НачПрибл = CDbl(.TextBox4.Text)

Формула = Trim(CStr(.RefEditl.Text))

ПраваяЧасть = CDbl(.TextBox5.Text)

End With

'

' Элемент управления RefEdit при вводе в него ссылок на ячейки

' щелчком в соответствующей ячейке возвращает абсолютные ссылки на

' эти ячейки.

' При протаскивании маркера заполнения выделенной ячейки,

' содержащей формулу левой части уравнения, вниз по столбцу

' для получения корректного результата необходима не абсолютная, а

' относительная ссылка. Для преобразования абсолютной ссылки в

' относительную ниже в операторе цикла Do-Loop из строки с формулой,

' присвоенной строковой переменной Формула, удаляются все знаки

' абсолютной ссылки $

'

i = l Do

If Mid(Формула, i, 1) = "$" Then Длина = Len(Формула)

Формула = Left(Формула, i - 1) + Right(Формула, Длина - i)

Else

i = i + 1

End If

Loop While i <= Len(Формула)

'

' Очистка трех первых столбцов рабочего листа

'

Range("А:С").Clear

Содержание  Назад  Вперед