Программа Табулирование функций в объекте ListBox



 

Private Sub CommandButton1_Click()

Dim i As Integer

Dim x As Double

Dim XN As Double

Dim XK As Double

Dim DX As Double

Dim S() As String

If Not IsNumeric(TextBox1) Or Not IsNumeric(TextBox2) Or Not IsNumeric(TextBox3) Then

MsgBox " неверные данные "

Exit Sub

End If

XN = CDbl(TextBox1)

XK = CDbl(TextBox2)

DX = CDbl(TextBox3)

If OptionButton1 = True Then

ReDim S(Round(Abs(XK - XN) / DX) + 1, 1 To 3) As String

i = 0

S(i, 1) = "N": S(i, 2) = "x": S(i, 3) = "y"

i = i + 1

x = XN

Do While x <= XK

y = (2 + ( Sin ( x )) ^ 2) / (1 + x ^ 2) ' функция 1 семестра

S(i, 1) = i: S(i, 2) = Format(x, "0.0"): S(i, 3) = Format(y, "0.0")

x = x + DX: i = i + 1

Loop

End If

If OptionButton2 = True Then

ReDim S(Round(Abs(XK - XN) / DX) + 1, 1 To 4) As String

i = 0

S(i, 1) = "N": S(i, 2) = "x": S(i, 3) = "g1": S(i, 4) = "g2"

i = i + 1

x = XN

Do While x <= XK

y = g ( x ) ' функция 1 семестра

S(i, 1) = i: S(i, 2) = Format(x, "0.0")

If x <= 0 Then S(i, 3) = Format(y, "0.0000") Else S(i, 4) = Format(y, "0.0000")

x = x + DX: i = i + 1

Loop

End If

If OptionButton3 = True Then

ReDim S(Round(Abs(XK - XN) / DX) + 1, 1 To 5) As String

i = 0

S(i, 1) = "N": S(i, 2) = "x": S(i, 3) = "z1": S(i, 4) = "z2": S(i, 5) = "z3"

i = i + 1

x = XN

Do While x <= XK

y = z ( x ) ' функция 1 семестра

S(i, 1) = i: S(i, 2) = Format(x, "0.0")

If x < 0 Then S(i, 3) = Format(y, "0.0000")

If (x >= 0) And (x <= 1) Then S(i, 4) = Format(y, "0.0000")

If x > 1 Then S(i, 5) = Format(y, "0.0000")

x = x + DX: i = i + 1

Loop

End If

With ListBox1

.ColumnCount = 5

.List = S

End With

End Sub

Private Sub CommandButton2_Click()

Unload Me

End Sub

Function g(x)

If x <= 0 Then g = (3 * x ^ 2) / (1 + x ^ 2) Else g = Sqr(1 + 2 * x / (1 + x ^ 2))

End Function

Function z(x)

If x < 0 Then z = 3 * x + Sqr(1 + x ^ 2)

If (x >= 0) And (x <= 1) Then z = 2 * Cos(x) * Exp(-2 * x)

If x > 1 Then z = 2 * Sin(3 * x)

End Function

Некоторые комментарии к программе:

 

– В модуле Private Sub CommandButton1_Click(), программно поддерживающем объект CommandButton1, используется функция IsNumeric(TextBox1), проверяющая являются ли данные, помещенные в объекте  TextBox1 или TextBox2 цифровыми;

– В программе также используется функция CDbl ( TextBox ), обеспечивающая преобразование данных объектов TextBox 1 и TextBox 2 в цифровые;

– В модуле используется динамическое объявление массива

Dim S () As String ,

с последующим уточнением мерности массива;

– Если включен объект OptionButton 1, то табулируется функция y = f ( x ), вычисленные значения которой и отображаются в объекте ListBox 1, рис. 10.10, предварительно уточняется мерность массива S , оператором

ReDim S(Round(Abs(XK - XN) / DX) + 1, 1 To 3) As String,

который можно размещать в любом месте программы. Диапазон изменения индексов по первому измерению от 0 до величины вычисленного результата арифметического выражения

Round ( Abs ( XK - XN ) / DX ) + 1 (+ 1, для того, чтобы увеличить количество элементов массива с учетом “шапки таблицы”), по второму измерению – от 1 до 3;

– Если включен объект OptionButton 2, то табулируется функция g = f ( x ), вычисленные значения которой и отображаются в объекте ListBox 1, рис. 10.11, предварительно уточняется мерность массива S , оператором

ReDim S ( Round ( Abs ( XK - XN ) / DX ) + 1, 1 To 3) As String ,

который можно размещать в любом месте программы. Диапазон изменения индексов по первому измерению от 0 до величины вычисленного результата арифметического выражения

Round ( Abs ( XK - XN ) / DX ) + 1 (+ 1, для того, чтобы увеличить количество элементов массива с учетом “шапки таблицы”), по второму измерению – от 1 до 4;

 

 

Рис. 10.11

 

– Если включен объект OptionButton 3, то табулируется функция z = f ( x ), вычисленные значения которой и отображаются в объекте ListBox 1, рис. 10.12, предварительно уточняется мерность массива S , оператором

ReDim S(Round(Abs(XK - XN) / DX) + 1, 1 To 3) As String,

который можно размещать в любом месте программы. Диапазон изменения индексов по первому измерению от 0 до величины вычисленного результата арифметического выражения

Round ( Abs ( XK - XN ) / DX ) + 1 (+ 1, для того, чтобы увеличить количество элементов массива с учетом “шапки таблицы”), по второму измерению – от 1 до 5;

 

 

Рис. 10.12.

 

– Формулы функций g = f ( x ) и z = f ( x ) оформлены в виде модулей пользовательских функций Function g ( x ) и Function z ( x );

– Объекту ListBox 1 сообщается свойство . ColumnCount , в соответствии с которым в объекте ListBox 1 устанавливается значение числа колонок  = 5, максимальное из возможных вариантов количества столбцов при табулировании функций y = f ( x ), g = f ( x ) и z = f ( x );

 

 


ЛИТЕРАТУРА

 

1. Гарнаев А. Ю., Использование MS Excel и VBA в экономике и финансах, СПб.: БХВ – Санкт-Петербург, 1999. – 336 с., ил.

2. Гарбер Г.З. Основы программирования на Visual Basic и VBA в Excel 2007, Москва, Солон-Пресс, 2008, 192 с.

 

Даша


Дата добавления: 2019-03-09; просмотров: 537; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!