kursov_text (Разработка приложений на языке VBA в среде MS EXCEL по обработке данных для заданных объектов), страница 2

2016-07-31СтудИзба

Описание файла

Документ из архива "Разработка приложений на языке VBA в среде MS EXCEL по обработке данных для заданных объектов", который расположен в категории "". Всё это находится в предмете "информатика" из , которые можно найти в файловом архиве . Не смотря на прямую связь этого архива с , его также можно найти и в других разделах. Архив можно найти в разделе "рефераты, доклады и презентации", в предмете "информатика, программирование" в общих файлах.

Онлайн просмотр документа "kursov_text"

Текст 2 страницы из документа "kursov_text"

:=wdOrganizerObjectProjectItems

Вставка новых строк в модуль проекта

ИмяПроекта.VBProject.VBComponents.Item("Имя модуля").CodeModule.InsertLines №, S

Где
- Номер строки в модуле, с которой будут вставляться новые строки
S – Вставляемая строка символов
Примечание:
В переменной S могут содержаться коды символов конца строк , которые можно получить следующей функцией со следующим аргументом: CHR(13). Таким образом, переменная S может содержать в себе сразу несколько строк:

S = “Первая строка”+ chr(13)+”Вторая строка” + chr(13)+”Третья строка” ‘и т.д.

Удаление строк из модуля

ИмяПроекта..VBProject.VBComponents.Item("Имя модуля").CodeModule.DeleteLines(№,Количество)

Где
- Номер строки в модуле с которой будут удаляться строки
Количество – количество удаляемых строк

Чтение строк из модуля

ИмяПроекта.VBProject.VBComponents.Item("Имя модуля").CodeModule.Lines(№,Количество)

Где
- Номер строки, в модуле с которой будут начинаться чтение строк
Количество – количество читаемых строк

Определение количества строк в модуле

ИмяПроекта.VBProject.VBComponents.Item("Имя модуля").CodeModule.CountOfLines

Переименование модулей проекта

ИмяПроекта.VBProject.VBComponents.Item(“ИмяМодуля”).Name =”Новое имя модуля”

Удаление модулей проекта

ИмяПроекта.VBProject.VBComponents.Remove _

ИмяПроекта.VBProject.VBComponents.Item("ИмяМодуля")

Определение количества модулей в проекте

ИмяПроекта.VBProject.VBComponents.Count

Создание нового модуля проекта

‘Создаем новый модуль макросов и подпрограмм

ИмяПроекта.VBProject.VBComponents.Add vbext_ct_StdModule

‘Определяем индекс созданного модуля

k = ИмяПроекта.VBProject.VBComponents.Count

‘даем свое имя модулю

ИмяПроекта.VBProject.VBComponents.Item(k).Name = "Новое имя модуля"

Постановка задачи и ее решение

Вид объекта – Числовая прямоугольная матрица.

Параметры объекта – Размерности матрицы

Входные формы – Ввод элементов матрицы со столбцом (Клавиатура, Файл, Тест-формула), Выбор вида обработки.

Виды обработки – Построение диаграмм

  1. Средние значения по строкам и столбцам

  2. Максимальные значения по строкам и столбцам

  3. Минимальные значения по строкам и столбцам

Option Explicit

Const m = 15

Dim i, j, k As Integer

Public Obr As Byte

Dim n, A(m, m), L(m) As Double

Public inp, NameF, Path As String

Dim Bukva As Variant

Dim det, s, x As Double

Public объявляет глобальную переменную. Объявлённая таким способом переменная становится доступной из всех модулей и форм проекта. Если переменная объявлена в разделе глобальных объявлений, то доступ к ней осуществляется просто по её имени. Если же она объявлена в коде формы, то доступ к ней из других форм и модулей осуществляется так: ИмяФормы. ИмяПеременной.



Sub ButtonCancel_Click()

Sheet1.OptionButton1.Select

Cng_List (False)

End Sub

Sub объявляет процедуру с именем name и параметрами arglist.

Public Sub Obrabotka()

Obr = Sheet1.ListBox1.ListIndex + 1

n = Sheet2.Range("R2")

If Obr > 0 Then

Select Case Obr

Case 1 ' Среднее значение по строкам

Call rab1(n)

Case 2 ' среднее значение по столбцам

Call rab2(n)

Case 3 ' min по строкам

Call rab3(n)

Case 4 ' min по столбцам

Call rab4(n)

Case 5 ' max по строкам

Call rab5(n)

Case 6 ' max по столбцам

Call rab6(n)

End Select

End If

End Sub

Здесь мы, соответственно, объявляем глобальную процедуру вида обработки. В данном случае это подсчет средних, максимальных, и минимальных элементов матрицы по столбцам и строкам

Call - Вызывает процедуру или функцию. Оператор Call может быть опущен.

Далее…

Sub ButtonOK_Click()

If Sheet1.OptionButton1.Value = True Then

'Ввод матрицы с клавиатуры в файл

Met1:

inp = InputBox "Введите размерность матрицы А", "Ввод размерности", "testfile" - выводит окно с запросом на ввод значения. Параметры такие же, как и у функции MsgBox.

n = Val(inp)- Превращает строку в число

If (n > 0) And (n <= 15) And (n - Int(n) = 0) Then

Sheet2.Visible = xlSheetVisible

Sheet2.Activate

Sheet2.Range("L2") = Str(n) + "*" + Str(n)

Sheet2.Range("R2") = n

InitS

Sheet2.Range("H3") = "Введите элементы матрицы, начиная с активной ячейки A4"

Else

If inp <> "" Then

MsgBox "Ошибка ввода размерности"-- Выводит на экран окно сообщения (Message Box) которое будет ждать клика на одной из кнопок. Возвращает число Integer, по которому можно определить какую кнопку нажал пользователь.

GoTo Met1- оператор для перехода на определённую метку

End If

End If

End If

If Sheet1.OptionButton2.Value = True Then

' Ввод матрицы из файла

Open "C:\file1" For Input As #2 - открывает файл для чтения, записи или для произвольного доступа.

Input #2, n

Sheet3.Visible = xlSheetVisible

Sheet3.Activate

' Sheet3.Range("M2") = Str(n) + "*" + Str(n)

Sheet3.Range("R2") = n

Call InitS – вызов функции InitS

For i = 1 To n

For j = 1 To n

Input #2, A(i, j)

Sheet3.Cells(i + 3, j) = A(i, j)

Next j

Next i

Close #2 - Закрывает файл, открытый оператором Open под номером 2.

MsgBox ("Матрица А прочитана из файла ")

End If

If Sheet1.OptionButton3.Value = True Then

'Заполнение тестового значения

Randomize - Инициализирует генератор случайных чисел. Если этот оператор не поместить перед функцией Rnd, то при каждом запуске приложения будут генерироваться одни и те же случайные числа.

For i = 1 To n

For j = 1 To n

A(i, j) = 20 * Rnd() - 10 - Возвращает Single значение, содержащее случайное число от 0 до 1.

Next j

Next i

Sheet3.Cells(3, 2) = " Матрица заполнена случайными тестовыми значениями "

For i = 1 To n

For j = 1 To n

Sheet3.Cells(i + 3, j) = A(i, j)

Next j

Next i

MsgBox ("Матрица А заполнена тестовыми значения (случайными числами)")

End If

If Sheet1.OptionButton4.Value = True Then

'Выбор обработки

Call Obrabotka – вызываем функцию «обработка».

End If

End Sub

В этой конструкции некоторые операторы выполняются только при условии, содержащееся в конструкции логическое выражение имеет значение True (истинно):

If Логическое_выражение Then Оператор

или сложнее

If Логическое_выражение Then
Группа_операторов
End If

В первом случает оператор может быть только один. Во втором сколько угодно (в том числе и один).

Далее…

Sub Cng_List(par As Boolean)

If par Then 'Активное

Sheet1.ListBox1.ForeColor = &H80000007

Sheet1.ListBox1.Enabled = True

Else 'Неактивное

Sheet1.ListBox1.ForeColor = &H80000013

Sheet1.ListBox1.Enabled = False

End If

End Sub



ListBox1 – элемент управления, префикс lst (При именовании элементов управления рекомендуется следовать стандартным соглашениям именования пользовательского интерфейса и элементов управления. Это позволяет упростить чтение и отладку программного кода. В именах элементов управления удобно проставлять префикс, однозначно указывающий на тип (класс) этого объекта.)



Sub Init()

Cng_List (False)

n = 0

For i = 1 To m

For j = 1 To m

A(i, j) = 0

Next j

Next i

Sheet2.Visible = xlSheetHidden

Sheet3.Visible = xlSheetHidden

End Sub

Sub InitS()

For i = 1 To m + 2

For j = 1 To m

ActiveSheet.Cells(i + 2, j) = ""

Next j

Next i

End Sub

Sub Button3_Click() ' ОК

n = Sheet2.Range("R2")

Open "C:\file1" For Output As #1

Write #1, n

For i = 1 To n

For j = 1 To n

If Sheet2.Cells(i + 3, j) = "" Then

A(i, j) = 0

Else

A(i, j) = Sheet2.Cells(i + 3, j)

End If

Write #1, A(i, j)

Next j

Next i

Close #1

MsgBox ("Матрица A записана в файл file1")

Call InitS

Sheet2.Visible = xlSheetVisible

Sheet1.Activate

Call Init

End Sub

Sub Button4_Click() ' Отмена

Sheet2.Visible = xlSheetVisible

Call InitS

Sheet1.Activate

Call Init

End Sub

Sub Button5_Click()

Call InitS

Sheet3.Visible = xlSheetVisible

Sheet1.Activate

Call Init

End Sub

Sub OutA() ' Вывод результата на экран

For i = 1 To n

For j = 1 To n

Sheet4.Cells(i + 3, j) = A(i, j)

Next j

Next i

MsgBox

End Sub



Sub getA() ' ввод матрицы из файла

For i = 1 To n

For j = 1 To n

If Sheet3.Visible = xlSheetHidden Then

MsgBox ("Введите матрицу А из файла")

Else

If Sheet3.Cells(i + 3, j) = "" Then

A(i, j) = 0 ' заполнение матрицы с клавиатуры

Else

A(i, j) = Sheet3.Cells(i + 3, j)

End If

End If

Next j

Next i

End Sub

Создание кнопок ОК, ОТМЕНА, заполнение матрицы в файл, а также вывод результатов на экран.

И, наконец, с помощью функции rab, мы проделываем все виды обработки.

Sub rab1(n As Variant)

Call getA

Sheet4.Activate

Call InitS

Sheet4.Range("H3") = "Среднее значение элементов по строкам"

Sheet4.Range("G4") = "Строка"

Sheet4.Range("I4") = "Xcp"

For i = 1 To n

s = 0

Sheet4.Cells(i + 4, 7) = i

For j = 1 To n

s = s + A(i, j)

Next j

s = s / n

Sheet4.Cells(i + 4, 9) = s

Next i

End Sub

Sub rab2(n As Variant)

Call getA

Sheet4.Activate

Call InitS

Sheet4.Range("H3") = "Среднее значение элементов по столбцу"

Sheet4.Range("G4") = "Столбец"

Sheet4.Range("I4") = "Xcp"

For j = 1 To n

s = 0

Sheet4.Cells(j + 4, 7) = j

For i = 1 To n

s = s + A(i, j)

Next i

s = s / n

Sheet4.Cells(j + 4, 9) = s

Next j

End Sub

Sub rab3(n As Variant)

Call getA

Sheet4.Activate

Call InitS

Sheet4.Range("H3") = " Min элементы в строках"

Sheet4.Range("G4") = "Строка"

Sheet4.Range("I4") = "Min"

For i = 1 To n

x = A(i, 1) 'min

Sheet4.Cells(i + 4, 7) = i

For j = 2 To n

If x > A(i, j) Then

x = A(i, j)

End If

Next j

Sheet4.Cells(i + 4, 9) = x

Next i

End Sub

Sub rab4(n As Variant)

Call getA

Sheet4.Activate

Call InitS

Sheet4.Range("H3") = "Min элементы по столбцам"

Sheet4.Range("G4") = "Столбец"

Sheet4.Range("I4") = "Min"

For j = 1 To n

x = A(1, j) 'min

Sheet4.Cells(j + 4, 7) = j

For i = 2 To n

If x > A(i, j) Then

x = A(i, j)

End If

Next i

Sheet4.Cells(j + 4, 9) = x

Next j

End Sub

Sub rab5(n As Variant)

Call getA

Sheet4.Activate

Call InitS

Sheet4.Range("H3") = "Max элементы по строкам"

Sheet4.Range("G4") = "Строка"

Sheet4.Range("H4") = "Max"

For i = 1 To n

s = A(i, 1) 'max

Sheet4.Cells(i + 4, 7) = i

For j = 2 To n

If s < A(i, j) Then

s = A(i, j)

End If

Next j

Sheet4.Cells(i + 4, 9) = s

Next i

End Sub

Sub rab6(n As Variant)

Call getA

Sheet4.Activate

Call InitS

Sheet4.Range("H3") = "Max элементы по

столбцам"

Sheet4.Range("G4") = "Столбец"

Sheet4.Range("H4") = "Max"

For j = 1 To n

s = A(1, j) 'max

Sheet4.Cells(j + 4, 7) = j

For i = 2 To n

If s < A(i, j) Then

s = A(i, j)

End If

Next i

Sheet4.Cells(j + 4, 9) = s

Next j

End Sub

Список использованной литературы

  • А.Васильев, А.Андреев. VBA в Office 2000. Учебный курс. С-Пб.: "Питер", 2001

  • Биллиг В.А. Средства разработки VBA-программиста. Офисное программирование. Том 1. М.: Издательско-торговый дом "Русская Редакция", 2001.

  • Биллиг В.А. Мир объектов Excel 2000. М.: Издательско-торговый дом "Русская Редакция", 2001.

  • В.И.Король. Visual Basic 6.0, Visual Basic for Applications 6.0. Язык программирования. Справочник с примерами. М.: Издательство КУДИЦ, 2000.

22


Свежие статьи
Популярно сейчас
Как Вы думаете, сколько людей до Вас делали точно такое же задание? 99% студентов выполняют точно такие же задания, как и их предшественники год назад. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5167
Авторов
на СтудИзбе
437
Средний доход
с одного платного файла
Обучение Подробнее