Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Структурные особенности Visual Basic.docx
Скачиваний:
44
Добавлен:
17.11.2019
Размер:
2.86 Mб
Скачать

45. Пример сортировки слов в строке с использованием объектной модели ms Excel.

Sort Выстраивает данные в лексикографическом порядке по возрастанию или убыванию. Он осуществляет сортировку строк, списков и БД, а также столбцов рабочих листов с учетом до трех критериев сортировки. Имеет ряд параметров key1 – ссылка на первое упорядочиваемое поле; order1 – задает порядок сортировки (x1Ascending – по возрастанию, x1Descendng – по убыванию); key2, order2, key3, order3 – аналогично; header – определяет наличие в первой строке диапазона заголовка (x1Yes) или его отсутствие (x1No); matchCase – учитывает наличие регистра (True) или его отсутствие (False); orientation задает направление сортировки сверху вниз (xlTopToBottom) или слева направо (x1LeftToRight).

Пример. (Отсортировать слова в строке по возрастанию с учетом регистра.)

Dim s As String

Private Sub Command1_Click()

Const xlAscending = 1

Const xlDescending = 2

Const xlNo = 2

Const xlTopToBottom = 1

Dim ObjExcel As Object

'Создаем объект OLE Automation и задаем свойства книги и листа

Set ObjExcel = CreateObject("Excel.Application")

With ObjExcel

.WorkBooks.Add

.ActiveSheet.Name = "Сортировка"

.Visible = False

.DisplayAlerts = False

End With

p = Split(s, ",") 'Создаем массив слов из строки

n% = UBound(p)

For i% = 0 To n

ObjExcel.Cells(i + 1, 1) = p(i)

Next i

ObjExcel.Range("A1:A" & Trim(CStr(n + 1))).Sort key1:=ObjExcel.Range("A1"), order1:=xlAscending, Header:=xlNo, matchCase:=True, Orientation:=xlTopToBottom

s = ""

For i% = 1 To n + 1

p = ObjExcel.Cells(i, 1).Value

I f i <> n + 1 Then

s = s & p & ","

Else

s = s & p

End If

Next i

Text2 = s

ObjExcel.Quit

Set ObjExcel = Nothing

End Sub

Private Sub Form_Load()

Caption = "Сортировка слов в строке"

Command1.Caption = "Sort"

Text1 = ""

Text2 = ""

'Ввод исходной строки

s = InputBox("Строка", , "Маша,маша,мАша,МАША,маША,маШа,мАшА,мАША")

Text1 = s

End Sub

46. Пример вычисления корня нелинейного уравнения с использованием объектной модели ms Excel.

метод GoalSeek() позволяет применить автоподбор значений для функции Excel программным способом. На графическом экране то же самое можно сделать при помощи меню Сервис -> Подбор параметра.

Подбирает значение параметра (неизвестной величины), являющееся решением уравнения (ур-я) с одной переменной. Предполагается, что правая часть явл-ся постоянной, не зависящей от парамета, кот. Входит только в лев.часть ур-я. Имеет два параметра: goal – значение правой части ур-я; changingcell содержит ссылку на ячейку с изменяющимся значением (приближение к искомому корню).

Пример. (С помощью метода «Подбор параметра» определить корень нелинейного уравнения.)

Private Sub Command1_Click()

Dim Eque As String, bool As String, Approx As Double

Dim ObjExcel As Object

'Создаем объект OLE Automation

Set ObjExcel = CreateObject("Excel.Application")

'Задаем свойства рабочей книги и листа

With ObjExcel

.WorkBooks.Add

.ActiveSheet.Name = "Решение нелинейных уравнений"

.Visible = False

.DisplayAlerts = False 'Запретить промежуточные диалоги

.MaxIterations = 10000 'Число итераций

.MaxChange = 0.00001 'Точность вычисления

End With

'Считываем уравнение из поля Text1 и помещаем его в ячейку A2

Eque = "=" & Text1

ObjExcel.Range("A2").Value = Eque

'Считываем начальное приближение к корню и помещаем его в A1

Approx = CDbl(Text2)

ObjExcel.Range("A1").Value = Approx

'Присваиваем имя "X" ячейке A1, иначе в уравнении необходимо

'использовать полную ссылку. Например, =0.5*A1^2-5*A1+8,

'вместо общепринятой формы: =0.5*X^2-5*X+8

ObjExcel.Range("A1").Name = "X"

'Объект GoalSeek вычисляет корень уравнения

'Он возвращает True, если решение найдено.

bool = ObjExcel.Range("A2").GoalSeek(Goal:=0, _

ChangingCell:=ObjExcel.Range("X"))

' Вывод результата в текстовое поле

Text3 = ObjExcel.Range("A1").Value

ObjExcel.Quit 'Закрываем Excel без сохранения

Set ObjExcel = Nothing 'Удаление объекта

End Sub

Private Sub Form_Load()

Caption = "Пример на OLE Automation"

Command1.Caption = "Найти корень"

Text1 = ""

Text2 = ""

Text3 = ""

Text1.TabIndex = 0

End Sub