Оператор присоединения

 

При заполнении нескольких элементов сразу используется оператор присоединения With. Он может сократить объем вашей программы.

Общий вид оператора присоединения With:

 

With Имя записи

Операторы, в которых присутствуют имена полей

End With

 

Пример

With Персона

. Nom = 33

. Fam = "Петров"

. Im = "Николай"

. Ad = "Химиков 100–128"

. Tel = 332681

. Dat = #12.09.99#

End With

 

Пример 1

Пусть данные табл. 8 находятся на первом рабочем листе Excel. Прочитать эту таблицу и вывести на печать все данные о Петрове Николае.

 

Программный код

 

Option Explicit

Type Персона

Nom As Integer

Fam As String

Im As String

Ad As String

Tel As Long

Dat As Date

End Type

Sub PR25()

Dim T(10) As Персона, i As Integer

‘ считывание таблицы

For i = 1 To 3

With T(i) ‘ оператор присоединения

. Nom = Cells(i, 1)

. Fam = Cells(i, 2)

. Im = Cells(i, 3)

. Ad = Cells(i, 4)

. Tel = Cells(i, 5)

. Dat = Cells(i, 6)

End With

Next i

‘ обработка таблицы

For i = 1 To 3

With T(i)

If . Fam = "Петров" And . Im = "Николай" Then

MsgBox (. Nom & " " & . Fam & " " & . Im & " "_

& . Ad & " " & . Tel & " " & . Dat)

End If

End With

Next i

End Sub

Пример 2

Пусть данные табл. 8 находятся на первом рабочем листе Excel. Прочитать таблицу с листа Excel и отсортировать записи по возрастанию номеров. Полученную таблицу вывести на лист Excel ниже исходной таблицы.

В описании переменных добавляются:

Dim N, K, As Integer

Dim P As Персона

Описание и ввод таблицы – как в примере 1.

 

Основная часть программы

 

For k = 1 To n – 1

For i = 1 To n – k ‘ сортировка методом “пузырька”

If T(i). Nom > T(i + 1). Nom Then

P = T(i)

T(i) = T(i + 1)

T(i + 1) = P

End If

Next i

Next k

‘ распечатка новой таблицы

For i = 1 To n

With T(i)

Cells(i + n + 1, 1) = . Nom

Cells(i + n + 1, 2) = . Fam

Cells(i + n + 1, 3) = . Im

Cells(i + n + 1, 4) = . Ad

Cells(i + n + 1, 5) = . Tel

Cells(i + n + 1, 6) = . Dat

End With

Next i

End Sub

 

Добавим в табл. 8 поле “Начисление”, т.е. одна запись будет состоять из следующих полей: Nom, Fam, Im, Ad, Tel, Dat, Nach.

Для добавления в запись нового поля следует добавить его в описание записи (раздел Type).

 

Пример 3

В новой таблице вычислим сумму, начисленную на всех сотрудников .

 

В описании переменных добавляется:

Dim S As Integer

В описание записи добавляется поле Nach.

 

Основная часть программы

 

S = 0

For i = 1 To N

With t(i)

S = S + . Nach

End With

Next i

Cells(i+N, 1) = "Итого"

Cells(i+N, 7) = S

 

Пример 4

Задана таблица вкладов клиентов банка, состоящая из следующих полей (табл. 9).

Таблица 9

 

№ счета Фамилия И.О. Сумма вклада, руб. Проценты Итог
Петров И.С.  
Иванов К.Т.  
Сидоров В.А.  

 

Вычислить сумму, полученную через год каждым клиентом (столбец “Итог”), общую сумму первоначальных вкладов и итоговую сумму всех вкладчиков, а также определить вкладчика с самым большим итоговым вкладом.

 

Программный код

 

Option Explicit

Type Stroka

Nch As Integer

Fam As String

IO As String

PSum As Double

Pro As Integer

Itog As Double

End Type

Sub PR26()

Dim Klient(100) As Stroka

Dim N As Integer

Dim i As Integer

Dim SP As Double

Dim SItog As Double

Dim imax As Integer

Dim max As Double

N = Val(InputBox("Введите количество клиентов"))

‘ Заполнение таблицы

For i = 1 To N

With Klient(i)

. Nch = Cells(i, 1)

. Fam = Cells(i, 2)

. IO = Cells(i, 3)

. PSum = Cells(i, 4)

. Pro = Cells(i, 5)

. Itog = . PSum + (. PSum * . Pro) / 100

End With

Next i

Range(Cells(i + N + 1, 1), Cells(100, 100)).Select

Selection.Clear

Cells(i + N + 1, 1).Select

Cells(i + N + 1, 2) = "итоговая таблица"

SItog = 0: SP = 0: max = –32000

For i = 1 To N

With Klient(i)

SP = SP + . PSum

SItog = SItog + . Itog

If . Itog > max Then

max = . Itog

imax = i

End If

Cells(i + N + 2, 1) = .Nch

Cells(i + N + 2, 2) = .Fam

Cells(i + N + 2, 3) = .IO

Cells(i + N + 2, 4) = .PSum

Cells(i + N + 2, 5) = .Pro

Cells(i + N + 2, 6) = .Itog

End With

Next i

Cells(2 * N + 4, 1) = "итого"

Cells(2 * N + 4, 4) = SP

Cells(2 * N + 4, 6) = SItog

Cells(2 * N + 6, 1) = "maxkl"

Cells(2 * N + 6, 2) = Klient(imax).Fam

End Sub

 

Подпрограммы

 

При написании длинных программ рационально использовать подпрограммы.

Подпрограмма – это отдельный блок, который может восприниматься как отдельная программа. В VBA существует два вида подпрограмм: подпрограмма-процедура и подпрограмма-функция.

 








Дата добавления: 2015-11-20; просмотров: 601;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

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

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.018 сек.