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

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

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

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

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

Макросы в EXCEL.

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

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

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

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

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


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: