Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МАКРОСЫ для лекции.doc
Скачиваний:
112
Добавлен:
25.03.2015
Размер:
107.52 Кб
Скачать

Примеры. Макросы в word.

‘ Пример 1 Макрос, обновляющий все поля при закрытии файла.

Sub Autoclose()

' Выделяем всё. Аналогично нажатию СTRL + A

Selection.WholeStory

'Обновляем всё, что выделено

Selection.Fields.Update

End Sub

Имя Autoclose()позволит макросу выполняться автоматически при закрытии документа.

Пример 2 Иллюстрация «Если».Запрос о необходимости обновления полей в документе

Sub primer3()

'

' primer3 Макрос

' Макрос создан 03.12.05

' задали переменную а (целого типа)

Dim a As Integer

a = MsgBox("Обновить поля ?", vbOKCancel, "это мое окно сообщения")

'При нажатии на Ok функция возвратит 1 , в другом случае 0.

'Если а=1, то выделяем все и обновляем поля

If a = 1 Then

Selection.WholeStory

Selection.Fields.Update

End If

End Sub

Пример 3 Иллюстрация использования окон ввода (диалога с пользователем)

Sub запрос()

'

' запрос Макрос

' Макрос создан 03.12.08

'

'

Dim a As Double

a = (InputBox("Введите курс доллара :", "Курс"))

' вызываем InputBox для получения курса доллара

' и присваеваем его переменной a

If a > 40 Then

MsgBox ("Не покупаем!!!")

Else MsgBox ("УРА, покупаем!!!")

End If

End Sub

Пример 4 Создание простого диалогового окна 1

Задание:

  • Ввести число

  • По нажатию кнопки прибавить к нему число 10

Действия пользователя:

  • создаем форму

  • «ставим» на нее элементы: 2 Label, 2 TextBox, 1 CommandBotton

  • настраиваем работу кнопки CommandBotton (2 щелчка на ней → текст программы)

Private Sub CommandButton1_Click()

TextBox2 = TextBox1 + 10

End Sub

  • Создаем пустой макрос:

Load UserForm1

UserForm1.Show

Теперь можно запускать этот макрос из любого документа.

Пример 5 Создание простого диалогового окна 2

Задание:

  • Ввести число

  • По нажатию кнопки, в зависимости от состояния флажка прибавить к нему число 10 или оставить данное число без изменений

Добавим на нашу форму флажок (Checkbox), он принимает всего 2 значения True/False, т.е:

  • включен -True

  • выключен -False

Можно это учесть в программе, изменив соответствующую строку на

If CheckBox1 = True Then

TextBox2 = TextBox1 + 10

Else

TextBox2 = TextBox1

End If

Пример 6 вывод приветствия при запуске Word.

Sub AutoExec()

'

' Макрос4 Макрос

' Макрос создан 23.10.2008

' Сообщение должно содержать имя, задаваемое по вводу. В случае не введения имени вывести другое произвольное сообщение приветствия.

Dim name As String

name = InputBox("Введите ваше имя", "Приветствие")

If name <> "" Then

msgbox "Привет, " & name, vbInformation, "Приветствие"

Else

msgbox "Добрый день,незнакомец!" & name, vbOKOnly, "cообщение"

End If

End Sub

В результате на экране будет

одно из сообщений:

Макросы в excel.

Пример 1 увеличение значений в выделенных ячейках на константу

Sub Макрос1()

'

' Макрос1 Макрос

' Макрос записан 06.11.2008

Dim a, i, j, it, jt As Integer

'Зададим окно ввода (диалог с пользователем)

a = InputBox("const", "Vvedite const")

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

'Jt И it –размер выделенной области

jt = Selection.Columns.Count

it = Selection.Rows.Count

'Изменение значений в ячейках

For i = 1 To it

For j = 1 To jt

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

Selection.Cells(i, j).Value = Selection.Cells(i, j).Value + a

Next j

Next i

End Sub

Пример 2 В ячейку вводятся числа 1,2 или 3. Отобразить их значения прописью

Sub Макрос1()

'

' Макрос1 Макрос

' Макрос записан 06.11.2008

'

If (ActiveCell.FormulaR1C1 = "1") Then ActiveCell.FormulaR1C1 = "один"

If (ActiveCell.FormulaR1C1 = "2") Then ActiveCell.FormulaR1C1 = "два"

If (ActiveCell.FormulaR1C1 = "3") Then ActiveCell.FormulaR1C1 = "три"

End Sub

Пример 3 Заполнение интервала ячеек случайными числами

Sub StickRandom()

Dim numRows As Integer, numCols As Integer

Dim theRow As Integer, theCol As Integer

'Определение размера текущего выбора.

numRows = Selection.Rows.Count

numCols = Selection.Columns.Count

Randomize

'Инициализация генератора случайных чисел

For theRow = 1 To numRows

For theCol = 1 To numCols

Selection.Cells(theRow, theCol).Value = Int(Rnd * 100)

Next theCol

Next theRow

End Sub

Пример 4 Вычисление среднего значения элементов массива

Sub BlockAverage()

Dim numRows As Integer, numCols As Integer

Dim theRow As Integer, theCol As Integer

Dim I As Integer, J As Integer

Dim theAverage As Single, theSum As Single

Dim myArray() As Single

'Определение размера текущего выбора.

numRows = Selection.Rows.Count

numCols = Selection.Columns.Count

ReDim myArray(numRows, numCols)

'Копирование содержимого ячеек в массив.

For theRow = 1 To numRows

For theCol = 1 To numCols

myArray(theRow, theCol) = Selection.Cells(theRow, theCol).Value

Next theCol

Next theRow

' Определение среднего арифметического элементов массива.

theSum = 0

For I = 1 To numRows

For J = 1 To numCols

theSum = theSum + myArray(I, J)

Next J

Next I

theAverage = theSum / (numRows * numCols)

MsgBox "Среднее арифметическое = " & Str(theAverage)

End Sub

Пример 5 Расчет возраста в днях

Sub AgeCalculator()

Dim theReply As String, thePrompt As String

Dim theTitle As String, theDefault As String

Dim theAge As Single, OKFlag As Boolean

Dim theName As String

thePrompt = "Введите Ваше имя, пожалуйста."

theTitle = "Персональный информационный диалог"

theDefault = "Имя"

'Цикл ожидания ввода имени пользователя.

Do

theReply = InputBox(thePrompt, theTitle, theDefault)

If theReply = "" Then Exit Sub

'Нажата командная кнопка Cancel.

theReply = Trim(theReply)

'Удаление пробелов с двух сторон строки.

'Проверка на строку пробелов или пробел в строке.

If (theReply = "") Or (InStr(theReply, " ") <> 0) Then

MsgBox "Непонятно, попробуйте еще раз, пожалуйста.", , theTitle

OKFlag = False

ElseIf theReply = theDefault Then 'Пользователь просто нажал Enter

MsgBox "Напечатайте что-нибудь и попробуйте еще раз, пожалуйста."

OKFlag = False

Else

'Ввод завершен нормально.

theName = theReply

OKFlag = True

End If

Loop Until OKFlag

'Теперь получим имя пользователя.

thePrompt = "Здравствуйте, " & theReply & ". Введите Ваш возраст, пожалуйста."

'Цикл ожидания ввода корректного числа.

Do

theReply = InputBox(thePrompt, theTitle)

If theReply = "" Then Exit Sub

'Нажата командная кнопка Cancel.

theAge = Val(theReply)

'Преобразование строки в число.

If Not IsNumeric(theReply) Then

'Введено не число.

MsgBox "Введите число и попробуйте еще раз, пожалуйста.", , theTitle

OKFlag = False

'Проверка корректности введенного числа.

ElseIf (theAge < 1) Or (theAge > 120) Then

MsgBox "Не верится, чтобы Вам было " & Str(theAge) & _

"лет. Попробуйте еще раз, пожалуйста.", , theTitle

OKFlag = False

Else

'Похоже на возраст.

OKFlag = True

End If

Loop Until OKFlag

'Расчет приблизительного возраста в днях.

MsgBox "Вам приблизительно " & Format(theAge * 365, "#,###") & " дней.", , theTitle

End Sub

Пример 6 Сложение 2-х вводимых чисел

Sub prim4()

a = InputBox("введите а", "ввод данных", 1)

b = InputBox("введите в", "ввод данных", 2)

c = Val(a) + Val(b)

MsgBox c

End Sub

Пример 7 Вычисление квадрата чисел от 1 до 10

Sub prim5()

For I = 1 To 10 Step 1

n = I * I

MsgBox "I = " & Str(I) & " n = " & Str(n)

Next I

End Sub

10

Сидоров В.В., Перепухова И.Г.